/usr/bin/debconf-copydb is in debconf 1.5.66.
This file is owned by root:root, with mode 0o755.
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 | #!/usr/bin/perl -w
# This file was preprocessed, do not edit!
use strict;
use Getopt::Long;
use Debconf::Log qw{:all};
use Debconf::Db;
use Debconf::DbDriver;
use Debconf::DbDriver::Backup;
sub usage {
print STDERR <<EOF;
Usage: debconf-copydb sourcedb destdb [--pattern=pattern] [--owner-pattern=pattern] [--config=Foo:bar]
EOF
exit(1);
}
my $pattern='.*';
my $owner_pattern;
my %config;
sub config {
my ($field, $value)=split(/\s*:\s*/, $_[1], 2);
$field=~tr/-/_/;
$field=lc($field);
die "Parse error: \"$_[1]\"" unless defined $field and length $field;
if ($field eq 'name') {
if ($config{name}) {
Debconf::Db->makedriver(%config);
}
elsif (%config) {
warn "ignoring command line config data before $_[1]";
}
%config=();
}
$config{$field}=$value;
}
GetOptions(
"pattern|p=s" => \$pattern,
"config|c=s" => \&config,
"owner-pattern=s" => \$owner_pattern,
) || usage();
Debconf::Db->makedriver(%config) if %config;
my $srcname=shift || usage();
my $destname=shift || usage();
Debconf::Db->load;
my $src=Debconf::DbDriver->driver($srcname);
die "$0: source database, \"$srcname\" does not exist\n" unless ref $src;
my $dest=Debconf::DbDriver->driver($destname);
die "$0: destination database, \"$destname\" does not exist\n" unless ref $dest;
my $copier=Debconf::DbDriver::Backup->new(
db => $src, backupdb => $dest, name => 'copier');
my $i=$copier->iterator;
while (my $item=$i->iterate) {
next unless $item =~ /$pattern/;
if (defined $owner_pattern) {
my $fit_owner = 0;
my $owner;
foreach $owner ($src->owners($item)){
$fit_owner = 1 if $owner =~ /$owner_pattern/;
}
next unless $fit_owner;
}
$copier->copy($item, $src, $dest);
}
$copier->shutdown;
|