X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcurl_json.c;h=07d575e54af1c3fe49a20fc92db9a95c7df172ac;hb=641c1c3ce02a2bfe45590ef2b4cdf4f2f68472a1;hp=35b11c02d9f08c0e61859ff9a93bafdfcd03274a;hpb=1ecde57a53fc7c50e6b0139ad745b868413d420c;p=collectd.git diff --git a/src/curl_json.c b/src/curl_json.c index 35b11c02..07d575e5 100644 --- a/src/curl_json.c +++ b/src/curl_json.c @@ -82,6 +82,7 @@ typedef struct { struct cj_s /* {{{ */ { char *instance; + char *plugin_name; char *host; char *sock; @@ -225,11 +226,6 @@ static void cj_advance_array(cj_t *db) { #define CJ_CB_ABORT 0 #define CJ_CB_CONTINUE 1 -static int cj_cb_boolean(void *ctx, int boolVal) { - cj_advance_array(ctx); - return CJ_CB_CONTINUE; -} - static int cj_cb_null(void *ctx) { cj_advance_array(ctx); return CJ_CB_CONTINUE; @@ -291,6 +287,14 @@ static int cj_cb_string(void *ctx, const unsigned char *val, yajl_len_t len) { return cj_cb_number(ctx, (const char *)val, len); } /* int cj_cb_string */ +static int cj_cb_boolean(void *ctx, int boolVal) { + if (boolVal) { + return (cj_cb_number (ctx, "1", 1)); + } else { + return (cj_cb_number (ctx, "0", 1)); + } +} /* int cj_cb_boolean */ + static int cj_cb_end(void *ctx) { cj_t *db = (cj_t *)ctx; memset(&db->state[db->depth], 0, sizeof(db->state[db->depth])); @@ -396,6 +400,7 @@ static void cj_free(void *arg) /* {{{ */ db->tree = NULL; sfree(db->instance); + sfree(db->plugin_name); sfree(db->host); sfree(db->sock); @@ -672,6 +677,8 @@ static int cj_config_add_url(oconfig_item_t *ci) /* {{{ */ if (strcasecmp("Instance", child->key) == 0) status = cf_util_get_string(child, &db->instance); + else if (strcasecmp("Plugin", child->key) == 0) + status = cf_util_get_string(child, &db->plugin_name); else if (strcasecmp("Host", child->key) == 0) status = cf_util_get_string(child, &db->host); else if (db->url && strcasecmp("User", child->key) == 0) @@ -805,7 +812,8 @@ static void cj_submit_impl(cj_t *db, cj_key_t *key, value_t *value) /* {{{ */ sstrncpy(vl.type_instance, key->instance, sizeof(vl.type_instance)); sstrncpy(vl.host, cj_host(db), sizeof(vl.host)); - sstrncpy(vl.plugin, "curl_json", sizeof(vl.plugin)); + sstrncpy(vl.plugin, (db->plugin_name != NULL) ? db->plugin_name : "curl_json", + sizeof(vl.plugin)); sstrncpy(vl.plugin_instance, db->instance, sizeof(vl.plugin_instance)); sstrncpy(vl.type, key->type, sizeof(vl.type));