From 162faf883a864a94c0f75ca0e21360cbd001e0f3 Mon Sep 17 00:00:00 2001 From: Harper Mann Date: Wed, 7 Dec 2005 19:32:37 +0000 Subject: [PATCH] Nagiosplug bug 1266977. Added code to insert the closing after the plugin output but before the performance output. git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1296 f882894a-f735-0410-b71e-b25c423dba1c --- plugins/urlize.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/plugins/urlize.c b/plugins/urlize.c index 96bbdc0..13ab14e 100644 --- a/plugins/urlize.c +++ b/plugins/urlize.c @@ -27,6 +27,9 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; #include "utils.h" #include "popen.h" +#define PERF_CHARACTER "|" +#define NEWLINE_CHARACTER '\n' + void print_help (void); void print_usage (void); @@ -37,6 +40,8 @@ main (int argc, char **argv) char *url = NULL; char *cmd; char *buf; + char *nstr; + char tstr[MAX_INPUT_BUFFER]; int c; int option = 0; @@ -53,7 +58,7 @@ main (int argc, char **argv) while (1) { c = getopt_long (argc, argv, "+hVu:", longopts, &option); - + if (c == -1 || c == EOF) break; @@ -94,11 +99,13 @@ main (int argc, char **argv) printf (_("Could not open stderr for %s\n"), cmd); } + bzero(tstr, sizeof(tstr)); buf = malloc(MAX_INPUT_BUFFER); printf ("", argv[1]); while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) { found++; - printf ("%s", buf); + /* Collect the string in temp str so we can tokenize */ + strcat(tstr, buf); } if (!found) @@ -106,6 +113,19 @@ main (int argc, char **argv) _("%s UNKNOWN - No data received from host\nCMD: %s\n"), argv[0], cmd); + + /* chop the newline character */ + if ((nstr = strchr(tstr, NEWLINE_CHARACTER)) != NULL) + *nstr = '\0'; + + /* tokenize the string for Perfdata if there is some */ + nstr = strtok(tstr, PERF_CHARACTER); + printf ("%s", nstr); + printf (""); + nstr = strtok(NULL, PERF_CHARACTER); + if (nstr != NULL) + printf (" | %s", nstr); + /* close the pipe */ result = spclose (child_process); @@ -116,7 +136,6 @@ main (int argc, char **argv) /* close stderr */ (void) fclose (child_stderr); - printf ("\n"); return result; } -- 2.30.2