diff options
-rw-r--r-- | perl-install/printer/main.pm | 51 | ||||
-rw-r--r-- | perl-install/printer/printerdrake.pm | 15 |
2 files changed, 64 insertions, 2 deletions
diff --git a/perl-install/printer/main.pm b/perl-install/printer/main.pm index 6af5aad63..ec6082f21 100644 --- a/perl-install/printer/main.pm +++ b/perl-install/printer/main.pm @@ -2222,10 +2222,10 @@ sub autodetectionentry_for_uri { return $p; } } - } elsif ($uri =~ m!^hp:/(usb|par)/!) { + } elsif ($uri =~ m!^hp:/(usb|par|net)/!) { # HP printer (controlled by HPLIP) my $hplipdevice = $uri; - $hplipdevice =~ m!^hp:/(usb|par)/(\S+?)(\?serial=(\S+)|)$!; + $hplipdevice =~ m!^hp:/(usb|par|net)/(\S+?)(\?serial=(\S+)|)$!; my $model = $2; my $serial = $4; $model =~ s/_/ /g; @@ -2541,6 +2541,53 @@ sub start_hplip_manual { return @uris; } +sub remove_hpoj_config { + my ($device, @autodetected) = @_; + + for my $d (@autodetected) { + $device eq $d->{port} or next; + my $bus; + if ($device =~ /usb/) { + $bus = "usb"; + } elsif ($device =~ /par/ || + $device =~ m!/dev/lp! || + $device =~ /printers/) { + $bus = "par"; + } elsif ($device =~ /socket/) { + $bus = "hpjd"; + } + my $path = "$::prefix/etc/ptal"; + opendir PTALDIR, "$path"; + while (my $file = readdir(PTALDIR)) { + next if $file !~ /^(mlc:|)$bus:/; + $file = "$path/$file"; + if ($bus eq "hpjd") { + $device =~ m!^socket://(\S+?)(:\d+|)$!; + my $host = $1; + if ($file =~ /$host/) { + closedir PTALDIR; + unlink ($file) or return $file; + printer::services::restart("hpoj"); + return undef; + } + } else { + if ((grep { /$d->{val}{MODEL}/ } chomp_(cat_($file))) && + ((!$d->{val}{SERIALNUMBER}) || + (grep { /$d->{val}{SERIALNUMBER}/ } + chomp_(cat_($file))))) { + closedir PTALDIR; + unlink ($file) or return $file; + printer::services::restart("hpoj"); + return undef; + } + } + } + last; + } + closedir PTALDIR; + return undef; +} + sub configure_hpoj { my ($device, @autodetected) = @_; diff --git a/perl-install/printer/printerdrake.pm b/perl-install/printer/printerdrake.pm index 3e8ab3eda..328593d32 100644 --- a/perl-install/printer/printerdrake.pm +++ b/perl-install/printer/printerdrake.pm @@ -2148,6 +2148,21 @@ sub setup_common { }; } } + # Remove old HPOJ configuration for this device + if (-f "/usr/sbin/ptal-mlcd") { # HPOJ installed? + if (my $configfile = + printer::main::remove_hpoj_config($device, @autodetected)) { + if (!$printer->{noninteractive} && !$::noX) { + undef $w; + local $::isWizard = 0; + $in->ask_warn + (N("Error"), + N("Could not remove your old HPOJ configuration file %s for your %s! ", + $configfile, $makemodel) . + N("Please remove the file manually and restart HPOJ.")); + } + } + } # Start HPLIP and get device URI undef $w; $w = $in->wait_message( |