diff options
Diffstat (limited to 'tools/epson2usb.pl')
-rwxr-xr-x | tools/epson2usb.pl | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tools/epson2usb.pl b/tools/epson2usb.pl new file mode 100755 index 0000000..afd6ebd --- /dev/null +++ b/tools/epson2usb.pl @@ -0,0 +1,63 @@ +#!/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"; + } + + |