#!/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);