diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/urlize.c | 25 |
1 files 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"; | |||
27 | #include "utils.h" | 27 | #include "utils.h" |
28 | #include "popen.h" | 28 | #include "popen.h" |
29 | 29 | ||
30 | #define PERF_CHARACTER "|" | ||
31 | #define NEWLINE_CHARACTER '\n' | ||
32 | |||
30 | void print_help (void); | 33 | void print_help (void); |
31 | void print_usage (void); | 34 | void print_usage (void); |
32 | 35 | ||
@@ -37,6 +40,8 @@ main (int argc, char **argv) | |||
37 | char *url = NULL; | 40 | char *url = NULL; |
38 | char *cmd; | 41 | char *cmd; |
39 | char *buf; | 42 | char *buf; |
43 | char *nstr; | ||
44 | char tstr[MAX_INPUT_BUFFER]; | ||
40 | 45 | ||
41 | int c; | 46 | int c; |
42 | int option = 0; | 47 | int option = 0; |
@@ -53,7 +58,7 @@ main (int argc, char **argv) | |||
53 | 58 | ||
54 | while (1) { | 59 | while (1) { |
55 | c = getopt_long (argc, argv, "+hVu:", longopts, &option); | 60 | c = getopt_long (argc, argv, "+hVu:", longopts, &option); |
56 | 61 | ||
57 | if (c == -1 || c == EOF) | 62 | if (c == -1 || c == EOF) |
58 | break; | 63 | break; |
59 | 64 | ||
@@ -94,11 +99,13 @@ main (int argc, char **argv) | |||
94 | printf (_("Could not open stderr for %s\n"), cmd); | 99 | printf (_("Could not open stderr for %s\n"), cmd); |
95 | } | 100 | } |
96 | 101 | ||
102 | bzero(tstr, sizeof(tstr)); | ||
97 | buf = malloc(MAX_INPUT_BUFFER); | 103 | buf = malloc(MAX_INPUT_BUFFER); |
98 | printf ("<A href=\"%s\">", argv[1]); | 104 | printf ("<A href=\"%s\">", argv[1]); |
99 | while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) { | 105 | while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) { |
100 | found++; | 106 | found++; |
101 | printf ("%s", buf); | 107 | /* Collect the string in temp str so we can tokenize */ |
108 | strcat(tstr, buf); | ||
102 | } | 109 | } |
103 | 110 | ||
104 | if (!found) | 111 | if (!found) |
@@ -106,6 +113,19 @@ main (int argc, char **argv) | |||
106 | _("%s UNKNOWN - No data received from host\nCMD: %s</A>\n"), | 113 | _("%s UNKNOWN - No data received from host\nCMD: %s</A>\n"), |
107 | argv[0], cmd); | 114 | argv[0], cmd); |
108 | 115 | ||
116 | |||
117 | /* chop the newline character */ | ||
118 | if ((nstr = strchr(tstr, NEWLINE_CHARACTER)) != NULL) | ||
119 | *nstr = '\0'; | ||
120 | |||
121 | /* tokenize the string for Perfdata if there is some */ | ||
122 | nstr = strtok(tstr, PERF_CHARACTER); | ||
123 | printf ("%s", nstr); | ||
124 | printf ("</A>"); | ||
125 | nstr = strtok(NULL, PERF_CHARACTER); | ||
126 | if (nstr != NULL) | ||
127 | printf (" | %s", nstr); | ||
128 | |||
109 | /* close the pipe */ | 129 | /* close the pipe */ |
110 | result = spclose (child_process); | 130 | result = spclose (child_process); |
111 | 131 | ||
@@ -116,7 +136,6 @@ main (int argc, char **argv) | |||
116 | /* close stderr */ | 136 | /* close stderr */ |
117 | (void) fclose (child_stderr); | 137 | (void) fclose (child_stderr); |
118 | 138 | ||
119 | printf ("</A>\n"); | ||
120 | return result; | 139 | return result; |
121 | } | 140 | } |
122 | 141 | ||