X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fexec.c;h=d5a8d0fd57562cd292f2156c42130da48f803dbe;hb=a00feb12d82ae2f46db99d0336b955f387f7f354;hp=b7be4c7a809b86159cffbc805b3f797e70355df9;hpb=0e3895c00ea46efccac1a7cf27483b6556cf8741;p=collectd.git diff --git a/src/exec.c b/src/exec.c index b7be4c7a..d5a8d0fd 100644 --- a/src/exec.c +++ b/src/exec.c @@ -1,6 +1,6 @@ /** * 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 @@ -22,7 +22,9 @@ #include "collectd.h" #include "common.h" #include "plugin.h" + #include "utils_cmd_putval.h" +#include "utils_cmd_putnotif.h" #include #include @@ -469,10 +471,15 @@ static int parse_line (char *buffer) /* {{{ */ 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) /* {{{ */ @@ -574,8 +581,10 @@ static void *exec_notification_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) @@ -586,6 +595,7 @@ static void *exec_notification_one (void *arg) /* {{{ */ kill (pl->pid, SIGTERM); pl->pid = 0; close (fd); + sfree (arg); pthread_exit ((void *) 1); }