diff --git a/src/exec.c b/src/exec.c
index b7be4c7a809b86159cffbc805b3f797e70355df9..d5a8d0fd57562cd292f2156c42130da48f803dbe 100644 (file)
--- a/src/exec.c
+++ b/src/exec.c
/**
* collectd - src/exec.c
- * Copyright (C) 2007 Florian octo Forster
+ * Copyright (C) 2007,2008 Florian octo Forster
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
#include "collectd.h"
#include "common.h"
#include "plugin.h"
+
#include "utils_cmd_putval.h"
+#include "utils_cmd_putnotif.h"
#include <sys/types.h>
#include <pwd.h>
int fields_num;
fields[0] = "PUTVAL";
- fields_num = strsplit (buffer, &fields[1], STATIC_ARRAY_SIZE(fields) - 1);
+ fields_num = strsplit (buffer, fields + 1, STATIC_ARRAY_SIZE(fields) - 1);
- handle_putval (stdout, fields, fields_num + 1);
- return (0);
+ 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));
} /* int parse_line }}} */
static void *exec_read_one (void *arg) /* {{{ */
const char *severity;
pid = fork_child (pl, &fd, NULL);
- if (pid < 0)
+ if (pid < 0) {
+ sfree (arg);
pthread_exit ((void *) 1);
+ }
fh = fdopen (fd, "w");
if (fh == NULL)
kill (pl->pid, SIGTERM);
pl->pid = 0;
close (fd);
+ sfree (arg);
pthread_exit ((void *) 1);
}