X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fmatch_empty_counter.c;h=27817fe5dbde63aaadcc9e2962d00a212c4be7d7;hp=eba6a58ea272445b98987dc3ca0c6d3cbc3beece;hb=1159cb5d383c55a80a0db100b8f7aadcf44740a5;hpb=21ab7512825cf8177d5eee5101344b45d0854610 diff --git a/src/match_empty_counter.c b/src/match_empty_counter.c index eba6a58e..27817fe5 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,95 +25,57 @@ **/ #include "collectd.h" + #include "common.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; -}; - -/* * 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 = calloc (1, sizeof (*m)); - if (m == NULL) - { - ERROR ("mec_create: calloc failed."); - return (-ENOMEM); - } - - 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 : */