73 lines
1.6 KiB
Perl
73 lines
1.6 KiB
Perl
|
#!/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);
|