diff -ruN nagiosplug-save/contrib/check_nagios_db.pl nagiosplug/contrib/check_nagios_db.pl
--- nagiosplug-save/contrib/check_nagios_db.pl	2002-08-14 20:01:58.000000000 +0100
+++ nagiosplug/contrib/check_nagios_db.pl	2004-03-27 22:36:35.000000000 +0000
@@ -1,62 +1,79 @@
-#!/usr/local/bin/perl -w
+#!/usr/bin/perl -wT
 
+require 5.004;
 use strict;
-$|++;
+use lib utils.pm ;
+use Plugin;
+use Plugin::Parameter qw(:DEFAULT $configfileparameter);
 
-use vars qw/$opt_e $opt_c/;
+use vars qw($opt_e $opt_c $opt_d $opt_t $PROGNAME);
 
-$ENV{"PATH"} = "/usr/bin:/usr/sbin:/bin";
+use utils qw(%ERRORS);
 
-use Getopt::Std;
 use DBI;
 
-my $driver = "mysql";
+my $c_opt = $configfileparameter;
+$c_opt->flags([ 'c', 'config-file' ]);
+$c_opt->default("/etc/nagios/cgi.cfg");
+my $e_opt = new Plugin::Parameter(-name => "expire", -flags => [ 'e', 'expire' ],
+				  -optional => "yes", -valueoptional => "no", -type => "INTEGER",
+				  -default => 5,
+				  -description => "Timeframe within which Nagios must have updated its status - given in minutes");
+my $d_opt = new Plugin::Parameter(-name => "driver", -flags => [ 'd', 'driver' ],
+				  -optional => "yes", -valueoptional => "yes", -type => "INTEGER",
+				  -default => "mysql",
+				  -description => "Driver to use to talk to the backend database - mysql, postgresql, ... - (See DBI)");
+my $plugin = new Plugin(-revision => '$Revision: 1.1 $',
+			-copyright => "Anonymous, 2004 Howard Wilkinson <howard\@cohtech.com>",
+			-shortcomment => "Check to see if Nagios is running when configured to use Database storage",
+			-parameterlists => [ [ $e_opt, $c_opt, $d_opt, $t_opt ], $h_opts, $V_opts ]);
+
+$ENV{"PATH"} = "/usr/bin:/usr/sbin:/bin";
+$ENV{"BASH_ENV"} = "";
+
+$plugin->init();
 
-my $CFG_DEF = "/opt/nagios/etc/cgi.cfg";
 my $QUERY = "select *, UNIX_TIMESTAMP(last_update) as ut from programstatus;";
-my $EXPIRE_DEF = 5; ## expressed in minutes
+
 my $PROCCNT = 0;
 
 use constant OK => 1;
 use constant WARN => 2;
 
-my $STAT = WARN;
+my $STAT = 'UNKNOWN';
 
-sub usage {
-        print STDERR "\n";
-        print STDERR "$0 -F -e <expire time in minutes> -C <process string>\n";
-        print STDERR "\n";
-        exit -1;
+unless ( -f $opt_c ) {
+  $plugin->usage();
+  usage("$PROGNAME UNKNOWN: no config file '$opt_c': $!\n");
 }
 
-getopt("e:c:");
-
-my $EXPIRE = $opt_e || $EXPIRE_DEF;
-my $CFG = $opt_c || $CFG_DEF;
-
-( -f $CFG ) or die "Can't open config file '$CFG': $!\n";
+$plugin->start_timeout($opt_t, "Timed out while checking status");
 
 my ($dbhost, $dbport, $dbuser, $dbpass, $dbname);
 
-open(F, "< $CFG");
+open(F, "< $opt_c");
 while ( <F> ) {
-        if (/^xsddb_host=(.+)/) { $dbhost = $1; next; };
-        if (/^xsddb_port=(.+)/) { $dbport = $1; next; };
-        if (/^xsddb_database=(.+)/) { $dbname = $1; next; };
-        if (/^xsddb_username=(.+)/) { $dbuser = $1; next; };
-        if (/^xsddb_password=(.+)/) { $dbpass = $1; next; };
+  if (/^xsddb_host=(.+)/) { $dbhost = $1; next; };
+  if (/^xsddb_port=(.+)/) { $dbport = $1; next; };
+  if (/^xsddb_database=(.+)/) { $dbname = $1; next; };
+  if (/^xsddb_username=(.+)/) { $dbuser = $1; next; };
+  if (/^xsddb_password=(.+)/) { $dbpass = $1; next; };
 }
 close(F);
 
-# print "($dbhost, $dbport, $dbuser, $dbpass, $dbname)\n";
-
-my $dsn = "DBI:$driver:database=$dbname;host=$dbhost;port=$dbport";
+my $dsn = "DBI:$opt_d:database=$dbname;host=$dbhost;port=$dbport";
 my $dbh = DBI->connect($dsn, $dbuser, $dbpass, {'RaiseError' => 1});
 
 my $sth = $dbh->prepare($QUERY);
-if (!$sth) { die "Error:" . $dbh->errstr . "\n"; }
+if (!$sth) {
+  print "$PROGNAME UNKNOWN: " . $dbh->errstr . "\n";
+  exit $ERRORS{'UNKNOWN'};
+}
 $sth->execute;
-if (!$sth->execute) { die "Error:" . $sth->errstr . "\n"; }
+if (!$sth->execute) {
+  print "$PROGNAME UNKNOWN: " . $sth->errstr . "\n";
+  exit $ERRORS{'UNKNOWN'};
+}
 
 my %status = ();
 
@@ -64,26 +81,24 @@
 my $numFields = $sth->{'NUM_OF_FIELDS'};
 my $ref = $sth->fetchrow_arrayref;
 for (my $i = 0;  $i < $numFields;  $i++) {
-        $status{"$$names[$i]"} = $$ref[$i];
+  $status{"$$names[$i]"} = $$ref[$i];
 }
 
-#foreach (keys(%status)) {
-#       print "$_: $status{$_}\n";
-#}
-
 my $lastupdated = time() - $status{"ut"};
-if ( $lastupdated < ($EXPIRE*60) ) { ## convert $EXPIRE to seconds
-        $STAT = OK;
+if ( $lastupdated < ($opt_e*60) ) { ## convert $opt_e to seconds
+  $STAT = 'OK';
+} else {
+  $STAT = 'CRITICAL';
 }
 
 open(PS, "ps -eaf | grep $status{nagios_pid} | grep -v grep | ");
 $PROCCNT = 0;
 while(<PS>) {
-        $PROCCNT++;
+  $PROCCNT++;
 }
 close(PS);
 
-if ( $STAT == OK ) {
-        print "Nagios OK: located $PROCCNT processes, program status updated $lastupdated seconds ago\n";
-}
+$plugin->stop_timeout();
 
+print "$PROGNAME $STAT: located $PROCCNT processes, program status updated $lastupdated seconds ago\n";
+exit $ERRORS{$STAT};
