/usr/share/perl5/AMC/Print/cupslp.pm is in auto-multiple-choice-common 1.3.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | #
# Copyright (C) 2015 Alexis Bienvenue <paamc@passoire.fr>
#
# This file is part of Auto-Multiple-Choice
#
# Auto-Multiple-Choice is free software: you can redistribute it
# and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# Auto-Multiple-Choice is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Auto-Multiple-Choice. If not, see
# <http://www.gnu.org/licenses/>.
package AMC::Print::cupslp;
use AMC::Print;
use AMC::Basic;
@ISA=("AMC::Print");
sub nonnul {
my $s=shift;
$s =~ s/\000//g;
return($s);
}
sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
$self->{method}='cupslp';
return($self);
}
sub check_available {
my @missing=();
for my $command (qw/lp lpoptions lpstat/) {
push @missing,$command if(!commande_accessible($command));
}
if(@missing) {
return(sprintf(__("The following commands are missing: %s."),
join(' ',@missing)));
} else {
return();
}
}
sub weight {
return(2.0);
}
sub printers_list {
my ($self)=@_;
my @list=();
open(PL,"-|","lpstat","-a")
or die "Can't exec lpstat: $!";
while(<PL>) {
push @list,{name=>$1,description=>$1}
if(/^([^\s]+)\s+accept/);
}
close PL;
return(@list);
}
sub default_printer {
my ($self)=@_;
open(PL,"-|","lpstat","-d")
or die "Can't exec lpstat: $!";
while(<PL>) {
return($1) if(/:\s*([^\s]+)/);
}
close PL;
return('');
}
sub printer_options_list {
my ($self,$printer)=@_;
my @o=();
open(OL,"-|","lpoptions","-p",$printer,"-l")
or die "Can't exec lpoptions: $!";
while(<OL>) {
if(m!^([^\s]+)/([^:]+):\s*(.*)!) {
my %option=(name=>$1,description=>$2,values=>[]);
my $vals=$3;
for my $k (split(/\s+/,$vals)) {
if($k =~ s/^\*//) {
$option{default}=$k;
}
push @{$option{values}},
{name=>$k,description=>$k};
}
push @o,{%option};
}
}
close OL;
return(@o);
}
# PRINTING
sub select_printer {
my ($self,$printer)=@_;
$self->{printername}=$printer;
$self->{printeroptions}={};
}
sub set_option {
my ($self,$option,$value)=@_;
$self->{printeroptions}->{$option}=$value;
}
sub print_file {
my ($self,$filename,$label)=@_;
my @command=("lp","-d",$self->{printername});
for my $k (keys %{$self->{printeroptions}}) {
push @command,"-o","$k=".$self->{printeroptions}->{$k};
}
push @command,$filename;
debug "Printing command: ".join(" ",@command);
system(@command);
}
1;
|