projects
/
collectd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
97f247e
)
redis: fix parser and comments
author
bufadu
<bufadu@gmail.com>
Fri, 5 May 2017 12:43:44 +0000
(14:43 +0200)
committer
bufadu
<bufadu@gmail.com>
Fri, 5 May 2017 12:43:44 +0000
(14:43 +0200)
src/redis.c
patch
|
blob
|
history
diff --git
a/src/redis.c
b/src/redis.c
index
4bfa3cf
..
40a311d
100644
(file)
--- a/
src/redis.c
+++ b/
src/redis.c
@@
-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) /* {{{ */
{
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];
for (int db = 0; db < REDIS_DEF_DB_COUNT; db++) {
static char buf[MAX_REDIS_VAL_SIZE];
- static char field_name[1
0
];
+ static char field_name[1
1
];
static char db_id[3];
value_t val;
char *str;
int i;
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 = 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';
buf[i] = *str;
buf[i] = '\0';