www.nico.schottelius.org/software/cinit/browse_source/cinit-0.3pre19/contrib+tools/cinit-vis.pl
Nico Schottelius 7c47ae1c48 update to cinit-0.3pre19
Signed-off-by: Nico Schottelius <nico@ikn.schottelius.org>
2009-11-30 07:27:49 +01:00

72 lines
1.6 KiB
Perl
Executable file

#!/usr/bin/perl -w
# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org)
# written for cinit and published under GPL
# beautified a bit by Nico Schottelius
# optimized by René Nussbaumer
# Version: 0.1
use strict;
use warnings;
#
# Variables for location and output
#
# cinit-directory
my $path = "/etc/cinit/svc/";
# started profile
my $starting_point = "init";
# the spaces for each level (integer: amount of spaces)
my $space = 3;
# marker for need
my $need = "-->";
# marker for want
my $want = "==>";
#
# main function, recursively list the components of the cinit system
#
if (@ARGV) {
if( $ARGV[0] =~ /-(h|-help)/ ) {
print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n";
print " Parameters:\n";
print " -h for this help\n";
print " profile-name for a profile\n";
exit(0);
}
else {
$starting_point = $ARGV[0];
}
}
#
# start first instance
#
sub get_deeper {
my ($point, $tmp_counter, $need_want) = splice @_;
print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n";
opendir(DIR, "${path}${point}/needs") and
my @next_need = sort grep(!/^\./, readdir(DIR)) and
closedir(DIR);
opendir(DIR, "${path}${point}/wants") and
my @next_want = sort grep(!/^\./, readdir(DIR)) and
closedir(DIR);
for(@next_need) {
get_deeper($_, $tmp_counter + 1, 1);
}
for(@next_want) {
get_deeper($_, $tmp_counter + 1, 0);
}
}
#
# start first instance
#
get_deeper($starting_point, 0, 0);
#
# work done, go home
#
exit(0);