summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xperl-install/scanner.pm92
1 files changed, 80 insertions, 12 deletions
diff --git a/perl-install/scanner.pm b/perl-install/scanner.pm
index ded14d5dd..90df5f6f6 100755
--- a/perl-install/scanner.pm
+++ b/perl-install/scanner.pm
@@ -23,7 +23,7 @@
# - devfs use dev_is_devfs()
# - with 2 scanners same manufacturer -> will overwrite previous conf -> only 1 conf !!
# - lp: see printerdrake
-# - install: prefix ??
+# - install: prefix --> done
package scanner;
use lib qw(/usr/lib/libDrakX);
@@ -32,13 +32,13 @@ use common;
use detect_devices;
-my $_sanedir = "/etc/sane.d";
-my $_scannerDBdir = "$ENV{SHARE_PATH}/ldetect-lst";
+my $_sanedir = "$prefix/etc/sane.d";
+my $_scannerDBdir = "$prefix$ENV{SHARE_PATH}/ldetect-lst";
$scannerDB = readScannerDB("$_scannerDBdir/ScannerDB");
sub confScanner {
my ($model, $port) = @_;
- $port = detect_devices::dev_is_devfs() ? "/dev/usb/scanner0" : "/dev/scanner" if (!$port);
+ $port = detect_devices::dev_is_devfs() ? "$prefix/dev/usb/scanner0" : "$prefix/dev/scanner" if (!$port);
my $a = $scannerDB->{$model}{server};
output("$_sanedir/$a.conf", (join "\n",@{$scannerDB->{$model}{lines}}));
substInFile {s/\$DEVICE/$port/} "$_sanedir/$a.conf";
@@ -113,20 +113,91 @@ sub updateScannerDBfromUsbtable {
substInFile {s/END//} "ScannerDB";
local *F;
open F, ">>ScannerDB" or die "can't write ScannerDB config in ScannerDB: $!";
+ print F "# generated from usbtable by scannerdrake\n";
foreach (cat_("$ENV{SHARE_PATH}/ldetect-lst/usbtable")) {
- my (undef, undef, $mod, $name) = chomp_(split /\s/,$_,4);
+ my ($vendor_id, $product_id, $mod, $name) = chomp_(split /\s/,$_,4);
next unless ($mod eq "\"scanner\"");
$name =~ s/\"(.*)\"$/$1/;
if (member($name, keys %$scanner::scannerDB)) {
print "$name already in ScannerDB\n";
next;
}
- print F "NAME $name\nDRIVER usb\nUNSUPPORTED\n\n";
+ print F "NAME $name\nDRIVER usb\nCOMMENT usb $vendor_id $product_id\nUNSUPPORTED\n\n";
}
- print F "END\n";
+ print F "END\n";
close F;
}
+sub updateScannerDBfromSane {
+ my ($_sanesrcdir) = @_;
+ substInFile {s/END//} "ScannerDB";
+
+ local *Y;
+ open Y, ">>ScannerDB" or die "can't write ScannerDB config in ScannerDB: $!";
+ print Y "# generated from Sane by scannerdrake\n";
+ # for compat with our usbtable
+ my $sane2DB = {
+ "Acer" => "Acer Peripherals Inc.",
+ "AGFA" => "AGFA-Gevaert NV",
+ "Agfa" => "AGFA-Gevaert NV",
+ "Epson" => "Seiko Epson Corp.",
+ "Fujitsu Computer Products of America" => "Fujitsu",
+ "HP" => sub {$_[0] =~ s/HP\s/Hewlett-Packard|/; $_[0] =~ s/HP4200/Hewlett-Packard|ScanJet 4200C/; $_[0];},
+ "Hewlett-Packard" => sub {$_[0] =~ s/HP 3200 C/Hewlett-Packard|ScanJet 3200C/; $_[0];},
+ "Kodak" => "Kodak Co.",
+ "Mustek" => "Mustek Systems Inc.",
+ "NEC" => "NEC Systems",
+ "Nikon" => "Nikon Corp.",
+ "Plustek" => "Plustek, Inc.",
+ "Primax" => "Primax Electronics",
+ "Siemens" => "Siemens Information and Communication Products",
+ "Trust" => "Trust Technologies",
+ "UMAX" => "Umax",
+ "Vobis/Highscreen" => "Vobis",
+ };
+
+ opendir YREP, $_sanesrcdir or die "can't open $_sanesrcdir: $!";
+ @files = grep /.*desc$/, readdir YREP;
+ closedir YREP;
+ foreach $i (@files) {
+ my $F = common::openFileMaybeCompressed("$_sanesrcdir/$i");
+ print Y "\n# from $i";
+ my ($lineno, $cmd, $val) = 0;
+ my ($name, $intf, $comment,$mfg);
+ my $fs = {
+ backend => sub {$backend = $val;},
+ mfg => sub {$mfg = $val; $name=undef;},#bug when a new mfg comes. should called $fs->{$name}(); but ??
+ model => sub {
+ unless ($name) {$name = $val; next;}
+ $name = (member($mfg, keys %$sane2DB))
+ ? (ref $sane2DB->{$mfg}) ? $sane2DB->{$mfg}($name) : "$sane2DB->{$mfg}|$name" : "$mfg|$name";
+ if (member($name, keys %$scanner::scannerDB)) {
+ print "#![$name] already in ScannerDB !\n";
+ } else {
+ print Y "\nNAME $name\nSERVER $backend\nDRIVER $intf\n";
+ print Y "COMMENT $comment\n" if ($comment);
+ $comment = undef;
+ }
+ #print "#-----------------------------------------------------------------------------\n";
+ $name = $val;
+ },
+ interface => sub {$intf = $val;},
+ comment => sub {$comment = $val;},
+ };
+ local $_;
+ while (<$F>) { $lineno++;
+ s/\s+$//;
+ /^\;/ and next;
+ ($cmd, $val) = /:(\S+)\s*\"([^\;]*)\"/ or next; #log::l("bad line $lineno ($_)"), next;
+ my $f = $fs->{$cmd};
+ $f ? $f->() : log::l("unknown line $lineno ($_)");
+ }
+ $fs->{model}(); # the last one
+ }
+ print Y "\nEND\n";
+ close Y;
+}
+
#-######################################################################################
#- Wonderful perl :(
#-######################################################################################
@@ -134,9 +205,6 @@ sub updateScannerDBfromUsbtable {
#-----------------------------------------------
# $Log$
-# Revision 1.2 2001/10/15 14:48:54 yduret
-# wonderful perl forgotten
-#
-# Revision 1.1 2001/10/10 12:44:59 yduret
-# *** empty log message ***
+# Revision 1.3 2001/11/12 15:18:02 yduret
+# update, sync with cvs
#