From e70d62aaf96830a6480b147e6c90c30aeef31a54 Mon Sep 17 00:00:00 2001 From: Thomas Guyot-Sionnest Date: Thu, 28 Jun 2012 22:54:38 -0400 Subject: Fix a bug where default file used is not shown When a default file is used but no section is found (ex. below using "bad_section"), the plugin dies with: Invalid section 'bad_section' in config file '' This patch add a function to Nagios::Plugin::Config that returns the last used file, and use it to return a file name when we have none. diff --git a/lib/Nagios/Plugin/Config.pm b/lib/Nagios/Plugin/Config.pm index 11128dd..dd270e9 100644 --- a/lib/Nagios/Plugin/Config.pm +++ b/lib/Nagios/Plugin/Config.pm @@ -7,6 +7,7 @@ use base qw(Config::Tiny); my $FILENAME1 = 'plugins.ini'; my $FILENAME2 = 'nagios-plugins.ini'; +my $CURRENT_FILE = undef; # Config paths ending in nagios (search for $FILENAME1) my @NAGIOS_CONFIG_PATH = qw(/etc/nagios /usr/local/nagios/etc /usr/local/etc/nagios /etc/opt/nagios); @@ -42,6 +43,7 @@ sub read die "Cannot find '$FILENAME1' or '$FILENAME2' in any standard location.\n" unless $_[0]; } + $CURRENT_FILE = $_[0]; $class->SUPER::read( @_ ); } @@ -73,7 +75,7 @@ sub read_string # Handle properties if ( /^\s*([^=]+?)\s*=\s*(.*?)\s*$/ ) { - push @{$self->{$ns}->{$1}}, $2; + push @{$self->{$ns}->{$1}}, $2; next; } @@ -85,6 +87,9 @@ sub read_string sub write { croak "Write access not permitted" } +# Return last file used by read(); +sub np_getfile { return $CURRENT_FILE; } + 1; =head1 NAME diff --git a/lib/Nagios/Plugin/Getopt.pm b/lib/Nagios/Plugin/Getopt.pm index 6432ee0..f910c4b 100644 --- a/lib/Nagios/Plugin/Getopt.pm +++ b/lib/Nagios/Plugin/Getopt.pm @@ -249,6 +249,7 @@ sub _load_config_section # TODO: is this check sane? Does --extra-opts=foo require a [foo] section? ## Nevertheless, if we die as UNKNOWN here we should do the same on default ## file *added eval/_die above*. + $file ||= $Config->np_getfile(); $self->_die("Invalid section '$section' in config file '$file'") unless exists $Config->{$section}; -- cgit v0.10-9-g596f