mirror of
https://github.com/webmin/webmin.git
synced 2026-05-04 22:30:33 +01:00
Minor CUPS ppd tweaks
This commit is contained in:
@@ -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(<FIND>) {
|
||||
chop;
|
||||
next if (/\.xml$/); # Ignore XML PPD sources
|
||||
/([^\/]+)$/;
|
||||
next if ($donefile{$1}++);
|
||||
push(@files, $_);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user