freebsd-ports/net-mgmt/nagios-plugins/files/patch-check_nagios.c
Dmitry Sivachenko 990a0dd8e5 Fix check_nagios plugin to work with nagios-2.x.
The format of status file changed a lot since nagios-1.x, so we just
check that mtime is fresh enough.

Reviewed by:	maintainer
2005-06-20 05:48:16 +00:00

53 lines
1.4 KiB
C

--- plugins/check_nagios.c.orig Sun Jun 19 09:51:52 2005
+++ plugins/check_nagios.c Sun Jun 19 09:53:28 2005
@@ -26,6 +26,8 @@
#include "common.h"
#include "popen.h"
#include "utils.h"
+#include <sys/types.h>
+#include <sys/stat.h>
int process_arguments (int, char **);
void print_help (void);
@@ -42,12 +44,12 @@
{
int result = STATE_UNKNOWN;
char input_buffer[MAX_INPUT_BUFFER];
- unsigned long latest_entry_time = 0L;
- unsigned long temp_entry_time = 0L;
+ unsigned long latest_entry_time;
int proc_entries = 0;
time_t current_time;
char *temp_ptr;
- FILE *fp;
+ struct stat sb;
+ int err;
int procuid = 0;
int procppid = 0;
int procvsz = 0;
@@ -78,21 +80,14 @@
alarm (timeout_interval);
/* open the status log */
- fp = fopen (status_log, "r");
- if (fp == NULL) {
- printf (_("CRITICAL - Cannot open status log for reading!\n"));
+ err = stat(status_log, &sb);
+ if (err) {
+ printf (_("CRITICAL - Cannot get modification time of status log!\n"));
return STATE_CRITICAL;
}
/* get the date/time of the last item updated in the log */
- while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) {
- temp_ptr = strtok (input_buffer, "]");
- temp_entry_time =
- (temp_ptr == NULL) ? 0L : strtoul (temp_ptr + 1, NULL, 10);
- if (temp_entry_time > latest_entry_time)
- latest_entry_time = temp_entry_time;
- }
- fclose (fp);
+ latest_entry_time = sb.st_mtime;
if (verbose >= 2)
printf(_("command: %s\n"), PS_COMMAND);