my $file = $args{"cfg"};
my $logfile;
my $type = $args{"cmd"};
my ( $pattern, $status, $time, $text, $item );

if( ($type eq "eventlog") && ! Platforms::iswin32() ) {
    print STDERR "you cannot monitor EventLog on non-Win32-Systems\n";
}
else {
    &uxmon::load_module( "$type" );
    $file = "$main::root/etc/$type" unless( $file );
    open( IN, "<$file" );
    while( <IN> ) {
	chomp;
	next unless( $_ );
	next if( /^#/ );
	if( /^([^\s]+):$/ ) {
	    my $file;

	    foreach (split(",",$1)) {
		$file = $_;
		unless( ($file =~ /^\//) || ($type eq "eventlog") ) {
	 	    $file = $main::root."/".$file;
		}
		last if( -f $file );
	    }
	    if( $type eq "OV" ) {
		$logfile = Monitor::OV->new( $file );
	    }
	    elsif( $type eq "syslog" ) {
		$logfile = Monitor::syslog->new( $file );
	    }
	    elsif( $type eq "logfile" ) {
		$logfile = Monitor::logfile->new( $file );
	    }
	    elsif( $type eq "eventlog" ) {
		$logfile = Monitor::eventlog->new( $args{"host"}.":".$file );
	    }
	    elsif( $type eq "snmp_trap" ) {
		$logfile = Monitor::snmp_trap->new( $file );
	    }
	    $logfile->sched_frequency( $args{"frequency"} );
	    uxmon::checker( $logfile );
	}
	elsif( /^node (.*)=([^\s\t]*)$/ ) {
	    $logfile->translation( $1, $2 );
	}
	else {
	    my $text;
	    ($pattern,$status,$time,$text,$item) = split( /\t+/ );
	    next unless( $pattern && $status );
	    my $code;
	    if( $status =~ /^\d$/ ) { $code = $status; }
	      elsif( $status eq "clear" ) { $code = -1; }
	      else { $code = $main::status_codes{$status}; }
	    if( $pattern eq "default" ) {
		$logfile->default( $time, "$item", $code, $text );
	    }
	    else {
		$logfile->add_check( "$item", $pattern, $code, $time*60, sub { return eval '"'.$text.'"'; } );
	    }
	}
    }
    close( IN );
}
