diff options
Diffstat (limited to 'perl-install')
-rw-r--r-- | perl-install/printer.pm | 32 | ||||
-rw-r--r-- | perl-install/printerdrake.pm | 7 |
2 files changed, 33 insertions, 6 deletions
diff --git a/perl-install/printer.pm b/perl-install/printer.pm index d64e47429..9d1a82e11 100644 --- a/perl-install/printer.pm +++ b/perl-install/printer.pm @@ -1468,10 +1468,12 @@ sub configure_hpoj { setupVariables (); readDeviceInfo (); - $device =~ m!^/dev/\S*lp(\d+)$! or $device =~ m!^socket://([^:]+)$! or + $device =~ m!^/dev/\S*lp(\d+)$! or + $device =~ m!^/dev/printers/(\d+)$! or + $device =~ m!^socket://([^:]+)$! or $device =~ m!^socket://([^:]+):(\d+)$!; my $model = $1; - my $model_long = $1; + my $model_long = ""; my $serialnumber = ""; my $serialnumber_long = ""; my $cardreader = 0; @@ -1483,7 +1485,9 @@ sub configure_hpoj { my $port = $2; if ($device =~ /usb/) { $bus = "usb"; - } elsif ($device =~ /par/) { + } elsif (($device =~ /par/) || + ($device =~ /\/dev\/lp/) || + ($device =~ /printers/)) { $bus = "par"; $address_arg = parport_addr($device); $address_arg =~ /^\s*-base\s+(\S+)/; @@ -1503,7 +1507,15 @@ sub configure_hpoj { foreach (@autodetected) { $device eq $_->{port} or next; $devdata = $_; - $model = $_->{val}{MODEL}; + # $model is for the PTAL device name, so make sure that it is unique + # so in the case of the model name auto-detection having failed leave + # the port number or the host name as model name. + my $searchunknown = _("Unknown model"); + if (($_->{val}{MODEL}) && + ($_->{val}{MODEL} !~ /$searchunknown/i) && + ($_->{val}{MODEL} !~ /^\s*$/)) { + $model = $_->{val}{MODEL}; + } $serialnumber = $_->{val}{SERIALNUMBER}; # Check if the device is really an HP multi-function device if ($bus ne "hpjd") { @@ -1526,6 +1538,15 @@ sub configure_hpoj { $model_long = join("", <F>); close F; chomp $model_long; + # If SNMP or local port auto-detection failed but HPOJ + # auto-detection succeeded, fill in model name here. + if ((!$_->{val}{MODEL}) || + ($_->{val}{MODEL} =~ /$searchunknown/i) || + ($_->{val}{MODEL} =~ /^\s*$/)) { + if ($model_long =~ /:([^:;]+);/) { + $_->{val}{MODEL} = $1; + } + } } if (open F, ($::testing ? $prefix : "chroot $prefix/ ") . "/usr/bin/ptal-devid $ptalprobedevice -long -sern 2>/dev/null |") { $serialnumber_long = join("", <F>); @@ -1720,7 +1741,8 @@ sub configure_hpoj { sub parport_addr{ # auto-detect the parallel port addresses my ($device) = @_; - $device =~ m!^/dev/lp(\d+)$!; + $device =~ m!^/dev/lp(\d+)$! or + $device =~ m!^/dev/printers/(\d+)$!; my $portnumber = $1; my $parport_addresses = `cat /proc/sys/dev/parport/parport$portnumber/base-addr`; diff --git a/perl-install/printerdrake.pm b/perl-install/printerdrake.pm index 9b00fd940..ba44bfad0 100644 --- a/perl-install/printerdrake.pm +++ b/perl-install/printerdrake.pm @@ -1182,7 +1182,12 @@ sub setup_common { my $ptaldevice = ""; my $isHPOJ = 0; if (($device =~ /^\/dev\//) || ($device =~ /^socket:\/\//)) { - if (!$do_auto_detect) { + # Ask user whether he has a multi-function device when he didn't + # do auto-detection or when auto-detection failed + my $searchunknown = _("Unknown model"); + if ((!$do_auto_detect) || + ($makemodel =~ /$searchunknown/i) || + ($makemodel =~ /^\s*$/)) { local $::isWizard = 0; $isHPOJ = $in->ask_yesorno(_("Local Printer"), _("Is your printer a multi-function device from HP or Sony (OfficeJet, PSC, LaserJet 1100/1200/1220/3200/3300 with scanner, Sony IJP-V100), an HP PhotoSmart or an HP LaserJet 2200?"), 0); |