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 89
|
#!/usr/bin/perl
use lib "@netdbusdir@";
use Net::DBus;
use Net::DBus::Reactor;
sub print_tabified
{
my ($tab, $str, $do_cr) = @_;
print " " x $tab;
print $str;
print "\n" if ($do_cr);
}
sub print_recursive
{
my ($obj, $tab) = @_;
if (ref $obj eq "ARRAY")
{
print_tabified ($tab, "ARRAY = [", 1);
foreach $elem (@{$obj})
{
print_recursive ($elem, $tab + 2);
}
print_tabified ($tab, "]", 1);
}
elsif (ref $obj eq "HASH")
{
print_tabified ($tab, "HASH = {", 1);
foreach $elem (keys %$obj)
{
$sibling_ref = ref $$obj{$elem};
#print child arrays and hashes in a new line
print_tabified ($tab + 2, "'$elem'\t=>" , ($sibling_ref eq "ARRAY" || $sibling_ref eq "HASH"));
print_recursive ($$obj{$elem}, $tab + 4);
}
print_tabified ($tab, "}", 1);
}
else
{
print_tabified ($tab, $obj, 1);
}
}
sub print_object
{
my ($service, $object) = @_;
my ($item);
my $obj = $service->get_object ("/org/freedesktop/SystemToolsBackends/$object");
my @arr = $obj->get ();
foreach $i (@arr) {
&print_recursive ($i, 0);
}
}
# Main program
my $bus = Net::DBus->system;
my $service = $bus->get_service("org.freedesktop.SystemToolsBackends");
if (!$ARGV[0])
{
print "Which backend object do you want to query? (i.e.: UsersConfig):\n";
$object = <STDIN>;
chomp $object;
print_object ($service, $object);
}
else
{
foreach $i (@ARGV)
{
chomp $i;
print "$i\n================================\n";
print_object ($service, $i);
print "\n\n";
}
}
print "Have a good day!\n";
|