From 3cf817c4f0f0e508a161249d01bb07a2f33dac17 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Fri, 11 Feb 2011 22:06:35 -0800 Subject: [PATCH] Minor CUPS ppd tweaks --- lpadmin/cups-driver.pl | 12 +++++++----- lpadmin/lpadmin-lib.pl | 41 ++++++++++++----------------------------- 2 files changed, 19 insertions(+), 34 deletions(-) diff --git a/lpadmin/cups-driver.pl b/lpadmin/cups-driver.pl index 0825cdd44..fb2944328 100755 --- a/lpadmin/cups-driver.pl +++ b/lpadmin/cups-driver.pl @@ -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"); + ©_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() { chop; + next if (/\.xml$/); # Ignore XML PPD sources /([^\/]+)$/; next if ($donefile{$1}++); push(@files, $_); diff --git a/lpadmin/lpadmin-lib.pl b/lpadmin/lpadmin-lib.pl index 7c347db3a..108d6eed6 100755 --- a/lpadmin/lpadmin-lib.pl +++ b/lpadmin/lpadmin-lib.pl @@ -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() { - if (/(\S+)<\/make>/) { - $ppd{'Manufacturer'} = $1; - } - if (/(\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() { - 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() { + 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; }