#!/usr/bin/perl use lib qw(/usr/lib/libDrakX); use common qw(:common :functional :file); use interactive; use log; local $_ = join '', @ARGV; /-h/ and die "usage: drakxservices\n"; $::isStandalone = 1; my $in = vnew interactive('su'); my @l = grep { !/\.rpm/ } map { chop; $_ } `cd /etc/rc.d/init.d ; grep -l "chkconfig:" *`; my @before = map { bool(@_ = glob("/etc/rc.d/rc*.d/S*$_")) } @l; my $after = $in->ask_many_from_list("drakxservices", _("Choose which services should be automatically started at boot time"), \@l, \@before); mapn { my ($name, $before, $after) = @_; if ($before != $after) { if ($after) { if (cat_("/etc/rc.d/init.d/$name") =~ /^chkconfig:\s+-/m) { system("chkconfig --add $name"); } else { `/sbin/runlevel` =~ /\s(\d+)/ or die "bad runlevel"; $1 == 3 || $1 == 5 or log::l("strange runlevel: ``$1'' (neither 3 nor 5)"); system("chkconfig --level $1 $name on"); } } else { system("chkconfig --del $name"); } } } \@l, \@before, $after if $after; $in->exit(0);