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