#!/usr/bin/perl require Iotta::Ctrl; use strict; use Getopt::Long; my (%cfg); #sub init_mods { # my ($mods, $pre, $fname); # # $fname = $cfg{"init/mods"}; # $fname = "iotta.mods" unless $fname; # # open (INPUT, $fname) || return 1; # while () { $mods.=$_; } # close (INPUT); # # for (split (/\n/, $mods)) { # my $b = $_; # s/::/\//g; # print STDERR "loading $b ($_.pm)\n"; # require "$_.pm" unless /^[ \t]*#.*$/; # } #} sub init_conf { my @confs; my ($conf, $key, $val, @fname); &Getopt::Long::Configure ("pass_through"); &GetOptions ("conf=s" => \@confs, "conffile=s" => \@fname); $conf = join ("\n", @confs); push @fname, "iotta.cf" if (!scalar @fname); for my $fname (@fname) { print STDERR "loading configuration file $fname...\n"; open (CF, $fname); #|| die "couldn't open configuration file $fname\n"; while () { $conf .= $_; }; close CF; } $conf =~ s/^#.*//; for (split (/\n/, $conf)) { ($key,$val) = split (/=/, $_); $cfg{$key}=$val; } } sub start_control { my ($ctrl, $ctrln, $retval); $ctrln = $cfg{"ctrl"}; $ctrln = "Iotta::Ctrl" if (!$ctrln); print STDERR "starting control module: $ctrln...\n"; my $req = $ctrln; $req =~ s/::/\//g; require "$req.pm"; $ctrl = $ctrln->new; $ctrl->config(\%cfg); $retval = $ctrl->main; exit ($retval); } &init_conf (@ARGV); #&init_mods (); &start_control (); exit (0);