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 81 82 83 84 85 86 87 88
|
#!/usr/bin/perl -w
=head1 NAME
Debconf::DbDriver::Debug - debug db requests
=cut
package Debconf::DbDriver::Debug;
use strict;
use Debconf::Log qw{:all};
use base 'Debconf::DbDriver';
=head1 DESCRIPTION
This driver is useful only for debugging other drivers. It makes each
method call output rather verbose debugging output.
=cut
=head1 FIELDS
=over 4
=item db
All requests are passed to this database, with logging.
=back
=cut
use fields qw(db);
=head1 METHODS
=head2 init
Validate the db field.
=cut
sub init {
my $this=shift;
# Handle value from config file.
if (! ref $this->{db}) {
$this->{db}=$this->driver($this->{db});
unless (defined $this->{db}) {
$this->error("could not find db");
}
}
}
# Ignore.
sub DESTROY {}
# All other methods just pass on to db with logging.
sub AUTOLOAD {
my $this=shift;
(my $command = our $AUTOLOAD) =~ s/.*://;
debug "db $this->{name}" => "running $command(".join(",", map { "'$_'" } @_).") ..";
if (wantarray) {
my @ret=$this->{db}->$command(@_);
debug "db $this->{name}" => "$command returned (".join(", ", @ret).")";
return @ret if @ret;
}
else {
my $ret=$this->{db}->$command(@_);
if (defined $ret) {
debug "db $this->{name}" => "$command returned \'$ret\'";
return $ret;
}
else {
debug "db $this->{name}" => "$command returned undef";
}
}
return; # failure
}
=head1 AUTHOR
Joey Hess <joeyh@debian.org>
=cut
1
|