redis: fix parser and comments
authorbufadu <bufadu@gmail.com>
Fri, 5 May 2017 12:43:44 +0000 (14:43 +0200)
committerbufadu <bufadu@gmail.com>
Fri, 5 May 2017 12:43:44 +0000 (14:43 +0200)
src/redis.c

index 4bfa3cf..40a311d 100644 (file)
@@ -356,22 +356,28 @@ static int redis_handle_query(redisContext *rh, redis_node_t *rn,
 
 static int redis_db_stats(char *node, char const *info_line) /* {{{ */
 {
+  /* redis_db_stats parses and dispatches Redis database statistics,
+   * currently the number of keys for each database.
+   * info_line needs to have the following format:
+   *   db0:keys=4,expires=0,avg_ttl=0
+   */
+
   for (int db = 0; db < REDIS_DEF_DB_COUNT; db++) {
     static char buf[MAX_REDIS_VAL_SIZE];
-    static char field_name[10];
+    static char field_name[11];
     static char db_id[3];
     value_t val;
     char *str;
     int i;
 
-    ssnprintf(field_name, sizeof(field_name), "db%d:keys", db);
+    ssnprintf(field_name, sizeof(field_name), "db%d:keys=", db);
 
     str = strstr(info_line, field_name);
     if (!str)
       continue;
 
-    str += strlen(field_name) + 1; /* also skip the '=' */
-    for (i = 0; (*str && (isdigit((int)*str) || *str == '.')); i++, str++)
+    str += strlen(field_name);
+    for (i = 0; (*str && isdigit((int)*str)); i++, str++)
       buf[i] = *str;
     buf[i] = '\0';