Tim Waugh b9b53f
#!/usr/bin/perl
Tim Waugh b9b53f
Tim Waugh b9b53f
use Getopt::Std;
Tim Waugh b9b53f
getopts("hr:");
Tim Waugh b9b53f
help() if $opt_h;
Tim Waugh b9b53f
$libdir=$opt_r if $opt_r;
Tim Waugh b9b53f
Tim Waugh b9b53f
use Foomatic::PPD;
Tim Waugh b9b53f
use Foomatic::Defaults;
Tim Waugh b9b53f
Tim Waugh b9b53f
my $file = $ARGV[0];
Tim Waugh b9b53f
my $printer = $ARGV[1];
Tim Waugh b9b53f
my $driver = $ARGV[2];
Tim Waugh b9b53f
Tim Waugh b9b53f
if (! -f "$libdir/db/source/printer/$printer.xml") {
Tim Waugh b9b53f
    die "Printer $printer does not seem to exist in the database!\n";
Tim Waugh b9b53f
}
Tim Waugh b9b53f
Tim Waugh b9b53f
if (! -f $file) {
Tim Waugh b9b53f
    die "The PPD file you specified, $file, does not seem to exist!\n";
Tim Waugh b9b53f
}
Tim Waugh b9b53f
Tim Waugh b9b53f
# Load the PPD
Tim Waugh b9b53f
my $p = new Foomatic::PPD $file, $printer;
Tim Waugh b9b53f
Tim Waugh b9b53f
# Normal behavior, save as various option files by ID
Tim Waugh b9b53f
my @opts = $p->foo_options();
Tim Waugh b9b53f
for (@opts) {
Tim Waugh b9b53f
    my ($id, $xml) = ($_->{'id'}, $_->{'xml'});
Tim Waugh b9b53f
    my $ofile = "$libdir/db/source/opt/$id.xml";
Tim Waugh b9b53f
    if (-f "$ofile") { die "Output file $ofile already exists\n"; }
Tim Waugh b9b53f
    open TMP, ">$ofile" or die "Cannot write $ofile!\n";
Tim Waugh b9b53f
    print STDERR "Writing $ofile\n";
Tim Waugh b9b53f
    # Fix <driver> section>
Tim Waugh b9b53f
    print TMP join('',@{$xml});
Tim Waugh b9b53f
    close TMP;
Tim Waugh b9b53f
}
Tim Waugh b9b53f
exit(0);
Tim Waugh b9b53f
Tim Waugh b9b53f
sub help {
Tim Waugh b9b53f
    select STDERR;
Tim Waugh b9b53f
    print "\n";
Tim Waugh b9b53f
    print "Usage: foomatic-ppdopts filename.ppd printer-id\n";
Tim Waugh b9b53f
    print "\n";
Tim Waugh b9b53f
    exit(1);
Tim Waugh b9b53f
}