X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fexec.c;h=973cd52b713c21277a7d27233fa000effccc79c0;hb=ba6497bdffb6a225eb6c86c8b8fa57a2520f0c5f;hp=a80de1e7a321b452b0971e2263ab0c1be9c2abf2;hpb=33fc797e4095b55a815cc2fa755f384204583dd5;p=collectd.git diff --git a/src/exec.c b/src/exec.c index a80de1e7..973cd52b 100644 --- a/src/exec.c +++ b/src/exec.c @@ -78,7 +78,7 @@ static pthread_mutex_t pl_lock = PTHREAD_MUTEX_INITIALIZER; /* * Functions */ -static void sigchld_handler (int signal) /* {{{ */ +static void sigchld_handler (int __attribute__((unused)) signal) /* {{{ */ { pid_t pid; int status; @@ -490,19 +490,19 @@ static int fork_child (program_list_t *pl, int *fd_in, int *fd_out, int *fd_err) static int parse_line (char *buffer) /* {{{ */ { - char *fields[256]; - int fields_num; - - fields[0] = "PUTVAL"; - fields_num = strsplit (buffer, fields + 1, STATIC_ARRAY_SIZE(fields) - 1); - - if (strcasecmp (fields[1], "putval") == 0) - return (handle_putval (stdout, fields + 1, fields_num)); - else if (strcasecmp (fields[1], "putnotif") == 0) - return (handle_putnotif (stdout, fields + 1, fields_num)); - - /* compatibility code */ - return (handle_putval (stdout, fields, fields_num + 1)); + if (strncasecmp ("PUTVAL", buffer, strlen ("PUTVAL")) == 0) + return (handle_putval (stdout, buffer)); + else if (strncasecmp ("PUTNOTIF", buffer, strlen ("PUTNOTIF")) == 0) + return (handle_putnotif (stdout, buffer)); + else + { + /* For backwards compatibility */ + char tmp[1220]; + /* Let's annoy the user a bit.. */ + INFO ("exec plugin: Prepending `PUTVAL' to this line: %s", buffer); + ssnprintf (tmp, sizeof (tmp), "PUTVAL %s", buffer); + return (handle_putval (stdout, tmp)); + } } /* int parse_line }}} */ static void *exec_read_one (void *arg) /* {{{ */ @@ -690,16 +690,16 @@ static void *exec_notification_one (void *arg) /* {{{ */ for (meta = n->meta; meta != NULL; meta = meta->next) { if (meta->type == NM_TYPE_STRING) - fprintf (fh, "%s: %s\n", meta->name, meta->value_string); + fprintf (fh, "%s: %s\n", meta->name, meta->nm_value.nm_string); else if (meta->type == NM_TYPE_SIGNED_INT) - fprintf (fh, "%s: %"PRIi64"\n", meta->name, meta->value_signed_int); + fprintf (fh, "%s: %"PRIi64"\n", meta->name, meta->nm_value.nm_signed_int); else if (meta->type == NM_TYPE_UNSIGNED_INT) - fprintf (fh, "%s: %"PRIu64"\n", meta->name, meta->value_unsigned_int); + fprintf (fh, "%s: %"PRIu64"\n", meta->name, meta->nm_value.nm_unsigned_int); else if (meta->type == NM_TYPE_DOUBLE) - fprintf (fh, "%s: %e\n", meta->name, meta->value_double); + fprintf (fh, "%s: %e\n", meta->name, meta->nm_value.nm_double); else if (meta->type == NM_TYPE_BOOLEAN) fprintf (fh, "%s: %s\n", meta->name, - meta->value_boolean ? "true" : "false"); + meta->nm_value.nm_boolean ? "true" : "false"); } fprintf (fh, "\n%s\n", n->message); @@ -712,7 +712,8 @@ static void *exec_notification_one (void *arg) /* {{{ */ DEBUG ("exec plugin: Child %i exited with status %i.", pid, status); - plugin_notification_meta_free (n); + plugin_notification_meta_free (n->meta); + n->meta = NULL; sfree (arg); pthread_exit ((void *) 0); return (NULL);