X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fmatch_empty_counter.c;h=799e09d58daacfb594fe55bc6dfd9f320186f507;hb=48efd3deb4c9139fd060ff3d289896e9031bcc7c;hp=e30ff91bc7f17e6a9983a9215e53497ea8c78794;hpb=b66d5b90a0e59e943a61acb4b68ce55e88f08ade;p=collectd.git diff --git a/src/match_empty_counter.c b/src/match_empty_counter.c index e30ff91b..799e09d5 100644 --- a/src/match_empty_counter.c +++ b/src/match_empty_counter.c @@ -1,6 +1,6 @@ /** * collectd - src/match_empty_counter.c - * Copyright (C) 2009 Florian Forster + * Copyright (C) 2009-2016 Florian Forster * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -25,97 +25,57 @@ **/ #include "collectd.h" -#include "common.h" -#include "utils_cache.h" -#include "filter_chain.h" -/* - * private data types - */ -struct mec_match_s; -typedef struct mec_match_s mec_match_t; -struct mec_match_s -{ - int dummy; -}; +#include "filter_chain.h" +#include "utils/common/common.h" /* * internal helper functions */ -static int mec_create (const oconfig_item_t *ci, void **user_data) /* {{{ */ +static int mec_create(const oconfig_item_t *ci, void **user_data) /* {{{ */ { - mec_match_t *m; - - m = (mec_match_t *) malloc (sizeof (*m)); - if (m == NULL) - { - ERROR ("mec_create: malloc failed."); - return (-ENOMEM); - } - memset (m, 0, sizeof (*m)); - - if (ci->children_num != 0) - { - ERROR ("empty_counter match: This match does not take any additional " - "configuration."); + if (ci->children_num != 0) { + ERROR("empty_counter match: This match does not take any additional " + "configuration."); } - *user_data = m; - return (0); + *user_data = NULL; + return 0; } /* }}} int mec_create */ -static int mec_destroy (void **user_data) /* {{{ */ +static int mec_destroy(__attribute__((unused)) void **user_data) /* {{{ */ { - if (user_data != NULL) - { - sfree (*user_data); - } - - return (0); + return 0; } /* }}} int mec_destroy */ -static int mec_match (const data_set_t __attribute__((unused)) *ds, /* {{{ */ - const value_list_t *vl, - notification_meta_t __attribute__((unused)) **meta, void **user_data) -{ - int num_counters; - int num_empty; - size_t i; - - if ((user_data == NULL) || (*user_data == NULL)) - return (-1); - - - num_counters = 0; - num_empty = 0; +static int mec_match(__attribute__((unused)) const data_set_t *ds, /* {{{ */ + const value_list_t *vl, + __attribute__((unused)) notification_meta_t **meta, + __attribute__((unused)) void **user_data) { + int num_counters = 0; + int num_empty = 0; - for (i = 0; i < ds->ds_num; i++) - { - if (ds->ds[i].type != DS_TYPE_COUNTER) + for (size_t i = 0; i < ds->ds_num; i++) { + if ((ds->ds[i].type != DS_TYPE_DERIVE) && + (ds->ds[i].type != DS_TYPE_COUNTER)) continue; num_counters++; - if (vl->values[i].counter == 0) + if (((ds->ds[i].type == DS_TYPE_DERIVE) && (vl->values[i].derive == 0)) || + ((ds->ds[i].type == DS_TYPE_COUNTER) && (vl->values[i].counter == 0))) num_empty++; } - if (num_counters == 0) - return (FC_MATCH_NO_MATCH); - else if (num_counters == num_empty) - return (FC_MATCH_MATCHES); - else - return (FC_MATCH_NO_MATCH); -} /* }}} int mec_match */ + if ((num_counters != 0) && (num_counters == num_empty)) + return FC_MATCH_MATCHES; -void module_register (void) -{ - match_proc_t mproc; + return FC_MATCH_NO_MATCH; +} /* }}} int mec_match */ - memset (&mproc, 0, sizeof (mproc)); - mproc.create = mec_create; - mproc.destroy = mec_destroy; - mproc.match = mec_match; - fc_register_match ("empty_counter", mproc); +void module_register(void) { + fc_register_match("empty_counter", (match_proc_t){ + .create = mec_create, + .destroy = mec_destroy, + .match = mec_match, + }); } /* module_register */ - -/* vim: set sw=2 sts=2 tw=78 et fdm=marker : */