Merge branch 'collectd-5.5'
[collectd.git] / src / target_scale.c
index b29a02b..22af4e3 100644 (file)
@@ -25,6 +25,7 @@
  **/
 
 #include "collectd.h"
+
 #include "common.h"
 #include "filter_chain.h"
 
@@ -89,22 +90,11 @@ static int ts_invoke_counter (const data_set_t *ds, value_list_t *vl, /* {{{ */
 
        if (failure == 0)
        {
-               uint64_t difference;
+               uint64_t diff;
                double rate;
 
-               /* Calcualte the rate */
-               if (prev_counter > curr_counter) /* => counter overflow */
-               {
-                       if (prev_counter <= 4294967295UL) /* 32 bit overflow */
-                               difference = (4294967295UL - prev_counter) + curr_counter;
-                       else /* 64 bit overflow */
-                               difference = (18446744073709551615ULL - prev_counter) + curr_counter;
-               }
-               else /* no overflow */
-               {
-                       difference = curr_counter - prev_counter;
-               }
-               rate = ((double) difference) / CDTIME_T_TO_DOUBLE (vl->interval);
+               diff = (uint64_t) counter_diff (prev_counter, curr_counter);
+               rate = ((double) diff) / CDTIME_T_TO_DOUBLE (vl->interval);
 
                /* Modify the rate. */
                if (!isnan (data->factor))
@@ -114,9 +104,9 @@ static int ts_invoke_counter (const data_set_t *ds, value_list_t *vl, /* {{{ */
 
                /* Calculate the internal counter. */
                int_fraction += (rate * CDTIME_T_TO_DOUBLE (vl->interval));
-               difference = (uint64_t) int_fraction;
-               int_fraction -= ((double) difference);
-               int_counter  += difference;
+               diff = (uint64_t) int_fraction;
+               int_fraction -= ((double) diff);
+               int_counter  += diff;
 
                assert (int_fraction >= 0.0);
                assert (int_fraction <  1.0);
@@ -313,7 +303,6 @@ static int ts_config_add_data_source(ts_data_t *data, /* {{{ */
 {
        size_t new_data_sources_num;
        char **temp;
-       int i;
 
        /* Check number of arbuments. */
        if (ci->values_num < 1)
@@ -324,7 +313,7 @@ static int ts_config_add_data_source(ts_data_t *data, /* {{{ */
        }
 
        /* Check type of arguments */
-       for (i = 0; i < ci->values_num; i++)
+       for (int i = 0; i < ci->values_num; i++)
        {
                if (ci->values[i].type == OCONFIG_TYPE_STRING)
                        continue;
@@ -339,7 +328,7 @@ static int ts_config_add_data_source(ts_data_t *data, /* {{{ */
 
        /* Allocate space for the char pointers */
        new_data_sources_num = data->data_sources_num + ((size_t) ci->values_num);
-       temp = (char **) realloc (data->data_sources,
+       temp = realloc (data->data_sources,
                        new_data_sources_num * sizeof (char *));
        if (temp == NULL)
        {
@@ -349,7 +338,7 @@ static int ts_config_add_data_source(ts_data_t *data, /* {{{ */
        data->data_sources = temp;
 
        /* Copy the strings, allocating memory as needed.  */
-       for (i = 0; i < ci->values_num; i++)
+       for (int i = 0; i < ci->values_num; i++)
        {
                size_t j;
 
@@ -380,8 +369,7 @@ static int ts_destroy (void **user_data) /* {{{ */
 
        if ((data != NULL) && (data->data_sources != NULL))
        {
-               size_t i;
-               for (i = 0; i < data->data_sources_num; i++)
+               for (size_t i = 0; i < data->data_sources_num; i++)
                        sfree (data->data_sources[i]);
                sfree (data->data_sources);
        }
@@ -396,21 +384,19 @@ static int ts_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
        ts_data_t *data;
        int status;
-       int i;
 
-       data = (ts_data_t *) malloc (sizeof (*data));
+       data = calloc (1, sizeof (*data));
        if (data == NULL)
        {
-               ERROR ("ts_create: malloc failed.");
+               ERROR ("ts_create: calloc failed.");
                return (-ENOMEM);
        }
-       memset (data, 0, sizeof (*data));
 
        data->factor = NAN;
        data->offset = NAN;
 
        status = 0;
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -458,7 +444,6 @@ static int ts_invoke (const data_set_t *ds, value_list_t *vl, /* {{{ */
                notification_meta_t __attribute__((unused)) **meta, void **user_data)
 {
        ts_data_t *data;
-       int i;
 
        if ((ds == NULL) || (vl == NULL) || (user_data == NULL))
                return (-EINVAL);
@@ -470,7 +455,7 @@ static int ts_invoke (const data_set_t *ds, value_list_t *vl, /* {{{ */
                return (-EINVAL);
        }
 
-       for (i = 0; i < ds->ds_num; i++)
+       for (size_t i = 0; i < ds->ds_num; i++)
        {
                /* If we've got a list of data sources, is it in the list? */
                if (data->data_sources) {
@@ -502,9 +487,8 @@ static int ts_invoke (const data_set_t *ds, value_list_t *vl, /* {{{ */
 
 void module_register (void)
 {
-       target_proc_t tproc;
+       target_proc_t tproc = { 0 };
 
-       memset (&tproc, 0, sizeof (tproc));
        tproc.create  = ts_create;
        tproc.destroy = ts_destroy;
        tproc.invoke  = ts_invoke;