X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdaemon%2Futils_cache.c;h=e2c64261d34aa363aacb41c315fd152204397445;hb=f0b5610723ae8962ae264f84210f8bac483bcd20;hp=7b2f95833576e4ab538e527b375e89ed122e27fd;hpb=b914b8bf2c6580fd78836399e0aaa851eb4883c5;p=collectd.git diff --git a/src/daemon/utils_cache.c b/src/daemon/utils_cache.c index 7b2f9583..e2c64261 100644 --- a/src/daemon/utils_cache.c +++ b/src/daemon/utils_cache.c @@ -37,7 +37,7 @@ typedef struct cache_entry_s { char name[6 * DATA_MAX_NAME_LEN]; - int values_num; + size_t values_num; gauge_t *values_gauge; value_t *values_raw; /* Time contained in the package @@ -79,7 +79,7 @@ static int cache_compare (const cache_entry_t *a, const cache_entry_t *b) return (strcmp (a->name, b->name)); } /* int cache_compare */ -static cache_entry_t *cache_alloc (int values_num) +static cache_entry_t *cache_alloc (size_t values_num) { cache_entry_t *ce; @@ -128,7 +128,7 @@ static void cache_free (cache_entry_t *ce) static void uc_check_range (const data_set_t *ds, cache_entry_t *ce) { - int i; + size_t i; for (i = 0; i < ds->ds_num; i++) { @@ -144,9 +144,9 @@ static void uc_check_range (const data_set_t *ds, cache_entry_t *ce) static int uc_insert (const data_set_t *ds, const value_list_t *vl, const char *key) { - int i; char *key_copy; cache_entry_t *ce; + size_t i; /* `cache_lock' has been locked by `uc_update' */ @@ -161,7 +161,7 @@ static int uc_insert (const data_set_t *ds, const value_list_t *vl, if (ce == NULL) { sfree (key_copy); - ERROR ("uc_insert: cache_alloc (%i) failed.", ds->ds_num); + ERROR ("uc_insert: cache_alloc (%zu) failed.", ds->ds_num); return (-1); } @@ -193,11 +193,13 @@ static int uc_insert (const data_set_t *ds, const value_list_t *vl, / CDTIME_T_TO_DOUBLE (vl->interval); ce->values_raw[i].absolute = vl->values[i].absolute; break; - + default: /* This shouldn't happen. */ ERROR ("uc_insert: Don't know how to handle data source type %i.", ds->ds[i].type); + sfree (key_copy); + cache_free (ce); return (-1); } /* switch (ds->ds[i].type) */ } /* for (i) */ @@ -373,7 +375,7 @@ int uc_update (const data_set_t *ds, const value_list_t *vl) char name[6 * DATA_MAX_NAME_LEN]; cache_entry_t *ce = NULL; int status; - int i; + size_t i; if (FORMAT_VL (name, sizeof (name), vl) != 0) { @@ -411,23 +413,7 @@ int uc_update (const data_set_t *ds, const value_list_t *vl) { case DS_TYPE_COUNTER: { - counter_t diff; - - /* check if the counter has wrapped around */ - if (vl->values[i].counter < ce->values_raw[i].counter) - { - if (ce->values_raw[i].counter <= 4294967295U) - diff = (4294967295U - ce->values_raw[i].counter) - + vl->values[i].counter; - else - diff = (18446744073709551615ULL - ce->values_raw[i].counter) - + vl->values[i].counter; - } - else /* counter has NOT wrapped around */ - { - diff = vl->values[i].counter - ce->values_raw[i].counter; - } - + counter_t diff = counter_diff (ce->values_raw[i].counter, vl->values[i].counter); ce->values_gauge[i] = ((double) diff) / (CDTIME_T_TO_DOUBLE (vl->time - ce->last_time)); ce->values_raw[i].counter = vl->values[i].counter; @@ -441,9 +427,7 @@ int uc_update (const data_set_t *ds, const value_list_t *vl) case DS_TYPE_DERIVE: { - derive_t diff; - - diff = vl->values[i].derive - ce->values_raw[i].derive; + derive_t diff = vl->values[i].derive - ce->values_raw[i].derive; ce->values_gauge[i] = ((double) diff) / (CDTIME_T_TO_DOUBLE (vl->time - ce->last_time)); @@ -465,7 +449,7 @@ int uc_update (const data_set_t *ds, const value_list_t *vl) return (-1); } /* switch (ds->ds[i].type) */ - DEBUG ("uc_update: %s: ds[%i] = %lf", name, i, ce->values_gauge[i]); + DEBUG ("uc_update: %s: ds[%zu] = %lf", name, i, ce->values_gauge[i]); } /* for (i) */ /* Update the history if it exists. */ @@ -565,7 +549,7 @@ gauge_t *uc_get_rate (const data_set_t *ds, const value_list_t *vl) * values are returned. */ if (ret_num != (size_t) ds->ds_num) { - ERROR ("utils_cache: uc_get_rate: ds[%s] has %i values, " + ERROR ("utils_cache: uc_get_rate: ds[%s] has %zu values, " "but uc_get_rate_by_name returned %zu.", ds->type, ds->ds_num, ret_num); sfree (ret);