#!/usr/local/bin/perl
# Show the disk usage tree
require './disk-usage-lib.pl';
@dirs = split(/\t+/, $config{'dirs'});
$fors = &text(@dirs > 1 ? 'index_fors' : 'index_for',
join(" ", map { "$_" } @dirs));
&ui_print_header($fors, $module_info{'desc'}, "", undef, 1, 1);
$tree = &get_usage_tree();
if ($tree) {
# Show it
%open = map { $_, 1 } &get_heiropen();
$open{"/"} = 1;
print "
\n";
print "\n";
print "$text{'index_total'} | \n";
print "$text{'index_files'} | \n";
print "$text{'index_dir'} | \n";
print "
\n";
&traverse($tree, 0);
print "
\n";
}
else {
print "$text{'index_none'}\n";
}
print "
\n";
print &ui_buttons_start();
print &ui_buttons_row("edit_sched.cgi",
$text{'index_sched'}, $text{'index_scheddesc'});
print &ui_buttons_row("run.cgi",
$text{'index_run'}, $text{'index_rundesc'});
print &ui_buttons_end();
&ui_print_footer("/", $text{'index'});
sub traverse
{
local ($node, $indent) = @_;
return if ($node->{'total'} < $config{'min'});
print "\n";
print "",&nice_size($node->{'total'}, $config{'units'})," | \n";
print "",&nice_size($node->{'files'}, $config{'units'})," | \n";
print "", " " x ($indent*3);
if ($node->{'dir'} ne "/") {
print "{'dir'}\">\n";
$act = $open{$node->{'dir'}} ? "close" : "open";
print "{'dir'}),"\">";
print "\n";
}
else {
print "\n";
}
print "$node->{'dir'} | \n";
print "
\n";
if ($open{$node->{'dir'}}) {
# Do sub-directories too
foreach my $subdir (sort { $b->{'total'} <=> $a->{'total'} }
@{$node->{'subs'}}) {
&traverse($subdir, $indent+1);
}
}
}