X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fcurl_json.c;h=f0badc998e05c2be1f45e0f04bcc365f88d3ab56;hp=35b11c02d9f08c0e61859ff9a93bafdfcd03274a;hb=06a86a60a7dabc685bdbd81ce3d36ea5f7e2c2d4;hpb=3a9c4019736178fb78e65389acaf97c84cdc3086 diff --git a/src/curl_json.c b/src/curl_json.c index 35b11c02..f0badc99 100644 --- a/src/curl_json.c +++ b/src/curl_json.c @@ -74,7 +74,7 @@ typedef struct { * exists for this part of the JSON structure. */ typedef struct { cj_tree_entry_t *entry; - _Bool in_array; + bool in_array; int index; char name[DATA_MAX_NAME_LEN]; } cj_state_t; @@ -82,6 +82,7 @@ typedef struct { struct cj_s /* {{{ */ { char *instance; + char *plugin_name; char *host; char *sock; @@ -90,9 +91,9 @@ struct cj_s /* {{{ */ char *user; char *pass; char *credentials; - _Bool digest; - _Bool verify_peer; - _Bool verify_host; + bool digest; + bool verify_peer; + bool verify_host; char *cacert; struct curl_slist *headers; char *post_body; @@ -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,13 @@ 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])); @@ -322,7 +325,7 @@ static int cj_cb_start_array(void *ctx) { return CJ_CB_ABORT; } db->depth++; - db->state[db->depth].in_array = 1; + db->state[db->depth].in_array = true; db->state[db->depth].index = 0; cj_load_key(db, "0"); @@ -332,7 +335,7 @@ static int cj_cb_start_array(void *ctx) { static int cj_cb_end_array(void *ctx) { cj_t *db = (cj_t *)ctx; - db->state[db->depth].in_array = 0; + db->state[db->depth].in_array = false; return cj_cb_end(ctx); } @@ -396,6 +399,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 +676,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 +811,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)); @@ -817,7 +824,6 @@ static void cj_submit_impl(cj_t *db, cj_key_t *key, value_t *value) /* {{{ */ static int cj_sock_perform(cj_t *db) /* {{{ */ { - char errbuf[1024]; struct sockaddr_un sa_unix = { .sun_family = AF_UNIX, }; @@ -828,8 +834,7 @@ static int cj_sock_perform(cj_t *db) /* {{{ */ return -1; if (connect(fd, (struct sockaddr *)&sa_unix, sizeof(sa_unix)) < 0) { ERROR("curl_json plugin: connect(%s) failed: %s", - (db->sock != NULL) ? db->sock : "", - sstrerror(errno, errbuf, sizeof(errbuf))); + (db->sock != NULL) ? db->sock : "", STRERRNO); close(fd); return -1; } @@ -840,8 +845,7 @@ static int cj_sock_perform(cj_t *db) /* {{{ */ red = read(fd, buffer, sizeof(buffer)); if (red < 0) { ERROR("curl_json plugin: read(%s) failed: %s", - (db->sock != NULL) ? db->sock : "", - sstrerror(errno, errbuf, sizeof(errbuf))); + (db->sock != NULL) ? db->sock : "", STRERRNO); close(fd); return -1; }