Merge branch 'collectd-5.7' into collectd-5.8
[collectd.git] / src / utils_latency_config.c
index 36c78eb..5eb5b6d 100644 (file)
@@ -26,8 +26,8 @@
  */
 
 #include "utils_latency_config.h"
-#include "collectd.h"
 #include "common.h"
+#include "collectd.h"
 
 static int latency_config_add_percentile(latency_config_t *conf,
                                          oconfig_item_t *ci,
@@ -85,13 +85,13 @@ static int latency_config_add_bucket(latency_config_t *conf, oconfig_item_t *ci,
     return ENOMEM;
   }
   conf->buckets = tmp;
-  conf->buckets[conf->buckets_num] = (latency_bucket_t){
-      .lower_bound = DOUBLE_TO_CDTIME_T(ci->values[0].value.number),
-      .upper_bound = DOUBLE_TO_CDTIME_T(ci->values[1].value.number),
-  };
+  conf->buckets[conf->buckets_num].lower_bound =
+      DOUBLE_TO_CDTIME_T(ci->values[0].value.number);
+  conf->buckets[conf->buckets_num].upper_bound =
+      DOUBLE_TO_CDTIME_T(ci->values[1].value.number);
   conf->buckets_num++;
 
-  return (0);
+  return 0;
 } /* int latency_config_add_bucket */
 
 int latency_config(latency_config_t *conf, oconfig_item_t *ci,
@@ -105,6 +105,8 @@ int latency_config(latency_config_t *conf, oconfig_item_t *ci,
       status = latency_config_add_percentile(conf, child, plugin);
     else if (strcasecmp("Bucket", child->key) == 0)
       status = latency_config_add_bucket(conf, child, plugin);
+    else if (strcasecmp("BucketType", child->key) == 0)
+      status = cf_util_get_string(child, &conf->bucket_type);
     else
       WARNING("%s plugin: \"%s\" is not a valid option within a \"%s\" block.",
               plugin, child->key, ci->key);
@@ -137,6 +139,14 @@ int latency_config_copy(latency_config_t *dst, const latency_config_t src) {
     return ENOMEM;
   }
 
+  if (src.bucket_type != NULL) {
+    dst->bucket_type = strdup(src.bucket_type);
+    if (dst->bucket_type == NULL) {
+      latency_config_free(*dst);
+      return ENOMEM;
+    }
+  }
+
   memmove(dst->percentile, src.percentile,
           dst->percentile_num * sizeof(*dst->percentile));
   memmove(dst->buckets, src.buckets, dst->buckets_num * sizeof(*dst->buckets));
@@ -147,4 +157,5 @@ int latency_config_copy(latency_config_t *dst, const latency_config_t src) {
 void latency_config_free(latency_config_t conf) {
   sfree(conf.percentile);
   sfree(conf.buckets);
+  sfree(conf.bucket_type);
 } /* void latency_config_free */