summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/printer.pm32
-rw-r--r--perl-install/printerdrake.pm7
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);