This file is indexed.

/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;