diff options
Diffstat (limited to 'perl-install')
-rw-r--r-- | perl-install/printer/main.pm | 75 |
1 files changed, 27 insertions, 48 deletions
diff --git a/perl-install/printer/main.pm b/perl-install/printer/main.pm index a9a45e2c4..f136e057c 100644 --- a/perl-install/printer/main.pm +++ b/perl-install/printer/main.pm @@ -628,61 +628,40 @@ sub set_cups_special_options { } #------------------------------------------------------------------------------ +sub lpstat_v { + map { + if (my ($queuename, $uri) = m/^\s*device\s+for\s+([^:\s]+):\s*(\S+)\s*$/) { + +{ queuename => $queuename, uri => $uri, if_($uri =~ m!^ipp://([^/:]+)[:/]!, ipp => $1) }; + } else { + (); + } +# } run_program::rooted_get_stdout($::prefix, 'lpstat', '-v'); + } run_program::rooted_get_stdout($::prefix, 'cat', '/tmp/t'); +} sub read_cups_printer_list { - my ($printer) = $_[0]; + my ($printer) = @_; # This function reads in a list of all printers which the local CUPS # daemon currently knows, including remote ones. - local *F; - open F, ($::testing ? $::prefix : "chroot $::prefix/ ") . - "lpstat -v |" or return (); - my @printerlist; - my $line; - while ($line = <F>) { - if ($line =~ m/^\s*device\s+for\s+([^:\s]+):\s*(\S+)\s*$/) { - my $queuename = $1; - my $comment = ""; - if ($2 =~ m!^ipp://([^/:]+)[:/]! && - !$printer->{configured}{$queuename}) { - $comment = N("(on %s)", $1); - } else { - $comment = N("(on this machine)"); - } - push @printerlist, "$queuename $comment"; - } - } - close F; - return @printerlist; + map { + my $comment = + $_->{ipp} && !$printer->{configured}{$_->{queuename}} ? + N("(on %s)", $_->{ipp}) : N("(on this machine)"); + "$_->{queuename} $comment"; + } lpstat_v(); } sub get_cups_remote_queues { - my ($printer) = $_[0]; - # This function reads in a list of all remote printers which the local - # CUPS daemon knows due to broadcasting of remote servers or - # "BrowsePoll" entries in the local /etc/cups/cupsd.conf/ - local *F; - open F, ($::testing ? $::prefix : "chroot $::prefix/ ") . - "lpstat -v |" or return (); - my @printerlist; - my $line; - while ($line = <F>) { - if ($line =~ m/^\s*device\s+for\s+([^:\s]+):\s*(\S+)\s*$/) { - my $queuename = $1; - my $comment = ""; - if ($2 =~ m!^ipp://([^/:]+)[:/]! && - !$printer->{configured}{$queuename}) { - $comment = N("On CUPS server \"%s\"", $1); - my $sep = "!"; - push @printerlist, - ($::expert ? N("CUPS") . $sep : "") . - N("Remote Printers") . "$sep$queuename: $comment" - . ($queuename eq $printer->{DEFAULT} ? - N(" (Default)") : ""); - } - } - } - close F; - return @printerlist; + my ($printer) = @_; + + map { + join('!', if_($::expert, N("CUPS")), N("Remote Printers"), $_); + } map { + my $comment = N("On CUPS server \"%s\"", $_->{ipp}) . ($_->{queuename} eq $printer->{DEFAULT} ? N(" (Default)") : ""); + "$_->{queuename}: $comment"; + } grep { + $_->{ipp} && !$printer->{configured}{$_->{queuename}}; + } lpstat_v(); } sub set_cups_autoconf { |