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