Merge branch 'collectd-5.4'
[collectd.git] / src / redis.c
index 2ce1f96..9282e19 100644 (file)
@@ -133,25 +133,31 @@ static redis_query_t *redis_config_query (oconfig_item_t *ci) /* {{{ */
         ERROR("redis plugin: calloca failed adding redis_query.");
         return NULL;
     }
-    status = cf_util_get_string_buffer(ci, rq->type, sizeof(rq->type));
+    status = cf_util_get_string_buffer(ci, rq->query, sizeof(rq->query));
     if (status != 0)
         goto err;
 
+    /*
+     * Default to a gauge type.
+     */
+    (void)strncpy(rq->type, "gauge", sizeof(rq->type));
+    (void)sstrncpy(rq->instance, rq->query, sizeof(rq->instance));
+    replace_special(rq->instance, sizeof(rq->instance));
+
     for (i = 0; i < ci->children_num; i++) {
         oconfig_item_t *option = ci->children + i;
 
-        if (strcasecmp("Exec", option->key) == 0) {
-            status = cf_util_get_string_buffer(option, rq->query, sizeof(rq->query));
+        if (strcasecmp("Type", option->key) == 0) {
+            status = cf_util_get_string_buffer(option, rq->type, sizeof(rq->type));
         } else if (strcasecmp("Instance", option->key) == 0) {
             status = cf_util_get_string_buffer(option, rq->instance, sizeof(rq->instance));
+        } else {
+            WARNING("redis plugin: unknown configuration option: %s", option->key);
+            status = -1;
         }
         if (status != 0)
             goto err;
     }
-    if (strlen(rq->query) == 0) {
-        WARNING("redis plugin: invalid query definition for: %s", rq->type);
-        goto err;
-    }
     return rq;
  err:
     free(rq);
@@ -298,7 +304,7 @@ int redis_handle_info (char *node, char const *info_line, char const *type, char
     int i;
 
     str += strlen (field_name) + 1; /* also skip the ':' */
-    for(i=0;(*str && (isdigit(*str) || *str == '.'));i++,str++)
+    for(i=0;(*str && (isdigit((unsigned char)*str) || *str == '.'));i++,str++)
       buf[i] = *str;
     buf[i] ='\0';