#!/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 = ; 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";