ca81f97577
Signed-off-by: Nico Schottelius <nico@ikn.schottelius.org>
72 lines
1.6 KiB
Perl
Executable file
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);
|