Minor CUPS ppd tweaks

This commit is contained in:
Jamie Cameron
2011-02-11 22:06:35 -08:00
parent 8120cb3016
commit 3cf817c4f0
2 changed files with 19 additions and 34 deletions

View File

@@ -90,20 +90,21 @@ sub create_driver
local $drv = "$cups_ppd_dir/$_[0]->{'name'}.ppd";
undef($cups_driver_options);
if ($_[1]->{'mode'} == 0) {
&system_logged("rm -f \"$drv\"");
&unlink_file($drv);
return undef;
}
elsif ($_[1]->{'mode'} == 2) {
&system_logged("rm -f \"$drv\"");
&unlink_file($drv);
return $_[1]->{'file'};
}
else {
# Copy the driver into place
if ($_[1]->{'ppd'} =~ /\.gz$/) {
&system_logged("gunzip -c '$_[1]->{'ppd'}' >$drv");
&system_logged("gunzip -c ".quotemeta($_[1]->{'ppd'}).
" >".quotemeta($drv));
}
else {
&system_logged("cp $_[1]->{'ppd'} $drv");
&copy_source_dest($_[1]->{'ppd'}, $drv);
}
chmod(0777, $drv);
$cups_driver_options = $_[1]->{'opts'}; # for modify_printer
@@ -114,7 +115,7 @@ else {
# delete_driver(name)
sub delete_driver
{
&system_logged("rm -f \"$cups_ppd_dir/$_[0].ppd\"");
&unlink_file("$cups_ppd_dir/$_[0].ppd");
}
# driver_input(&printer, &driver)
@@ -140,6 +141,7 @@ foreach my $mp (split(/\s+/, $config{'model_path'})) {
" -type f -print", 1, 1);
while(<FIND>) {
chop;
next if (/\.xml$/); # Ignore XML PPD sources
/([^\/]+)$/;
next if ($donefile{$1}++);
push(@files, $_);

View File

@@ -529,38 +529,21 @@ sub parse_cups_ppd
{
local ($file) = @_;
local %ppd;
if ($file =~ /\/([^\/+])\.xml$/) {
# XML format PPD
$ppd{'NickName'} = $1;
open(PPD, $file);
while(<PPD>) {
if (/<make>(\S+)<\/make>/) {
$ppd{'Manufacturer'} = $1;
}
if (/<model>(\S+)<\/model>/) {
$ppd{'ModelName'} = $1;
}
}
close(PPD);
if ($file =~ /\.gz$/) {
open(PPD, "gunzip -c ".quotemeta($file)." |");
}
else {
# Old text format PPD
if ($file =~ /\.gz$/) {
open(PPD, "gunzip -c ".quotemeta($file)." |");
}
else {
open(PPD, $file);
}
while(<PPD>) {
if (/^\s*\*(\S+):\s*"(.*)"/ || /^\s*\*(\S+):\s*(\S+)/) {
$ppd{$1} = $2;
}
elsif (/^\s*\*(\S+)\s+(\S+)\/([^:]+):/) {
$ppd{$1}->{$2} = $3 if (!defined($ppd{$1}->{$2}));
}
}
close(PPD);
open(PPD, $file);
}
while(<PPD>) {
if (/^\s*\*(\S+):\s*"(.*)"/ || /^\s*\*(\S+):\s*(\S+)/) {
$ppd{$1} = $2;
}
elsif (/^\s*\*(\S+)\s+(\S+)\/([^:]+):/) {
$ppd{$1}->{$2} = $3 if (!defined($ppd{$1}->{$2}));
}
}
close(PPD);
return \%ppd;
}