diff options
author | Thomas Guyot-Sionnest <dermoth@aei.ca> | 2012-06-28 22:54:38 -0400 |
---|---|---|
committer | Thomas Guyot-Sionnest <dermoth@aei.ca> | 2012-06-28 22:54:38 -0400 |
commit | e70d62aaf96830a6480b147e6c90c30aeef31a54 (patch) | |
tree | 8fcfa608a5770ec364b2c272d738e22ff72cbc55 | |
parent | bacb16365718f55bbb09f9d990011e3829691f16 (diff) | |
download | monitoring-plugin-perl-e70d62aaf96830a6480b147e6c90c30aeef31a54.tar.gz |
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.
-rw-r--r-- | lib/Nagios/Plugin/Config.pm | 7 | ||||
-rw-r--r-- | lib/Nagios/Plugin/Getopt.pm | 1 |
2 files changed, 7 insertions, 1 deletions
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); | |||
7 | 7 | ||
8 | my $FILENAME1 = 'plugins.ini'; | 8 | my $FILENAME1 = 'plugins.ini'; |
9 | my $FILENAME2 = 'nagios-plugins.ini'; | 9 | my $FILENAME2 = 'nagios-plugins.ini'; |
10 | my $CURRENT_FILE = undef; | ||
10 | 11 | ||
11 | # Config paths ending in nagios (search for $FILENAME1) | 12 | # Config paths ending in nagios (search for $FILENAME1) |
12 | my @NAGIOS_CONFIG_PATH = qw(/etc/nagios /usr/local/nagios/etc /usr/local/etc/nagios /etc/opt/nagios); | 13 | my @NAGIOS_CONFIG_PATH = qw(/etc/nagios /usr/local/nagios/etc /usr/local/etc/nagios /etc/opt/nagios); |
@@ -42,6 +43,7 @@ sub read | |||
42 | die "Cannot find '$FILENAME1' or '$FILENAME2' in any standard location.\n" unless $_[0]; | 43 | die "Cannot find '$FILENAME1' or '$FILENAME2' in any standard location.\n" unless $_[0]; |
43 | } | 44 | } |
44 | 45 | ||
46 | $CURRENT_FILE = $_[0]; | ||
45 | $class->SUPER::read( @_ ); | 47 | $class->SUPER::read( @_ ); |
46 | } | 48 | } |
47 | 49 | ||
@@ -73,7 +75,7 @@ sub read_string | |||
73 | 75 | ||
74 | # Handle properties | 76 | # Handle properties |
75 | if ( /^\s*([^=]+?)\s*=\s*(.*?)\s*$/ ) { | 77 | if ( /^\s*([^=]+?)\s*=\s*(.*?)\s*$/ ) { |
76 | push @{$self->{$ns}->{$1}}, $2; | 78 | push @{$self->{$ns}->{$1}}, $2; |
77 | next; | 79 | next; |
78 | } | 80 | } |
79 | 81 | ||
@@ -85,6 +87,9 @@ sub read_string | |||
85 | 87 | ||
86 | sub write { croak "Write access not permitted" } | 88 | sub write { croak "Write access not permitted" } |
87 | 89 | ||
90 | # Return last file used by read(); | ||
91 | sub np_getfile { return $CURRENT_FILE; } | ||
92 | |||
88 | 1; | 93 | 1; |
89 | 94 | ||
90 | =head1 NAME | 95 | =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 | |||
249 | # TODO: is this check sane? Does --extra-opts=foo require a [foo] section? | 249 | # TODO: is this check sane? Does --extra-opts=foo require a [foo] section? |
250 | ## Nevertheless, if we die as UNKNOWN here we should do the same on default | 250 | ## Nevertheless, if we die as UNKNOWN here we should do the same on default |
251 | ## file *added eval/_die above*. | 251 | ## file *added eval/_die above*. |
252 | $file ||= $Config->np_getfile(); | ||
252 | $self->_die("Invalid section '$section' in config file '$file'") | 253 | $self->_die("Invalid section '$section' in config file '$file'") |
253 | unless exists $Config->{$section}; | 254 | unless exists $Config->{$section}; |
254 | 255 | ||