X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcurl_json.c;h=dedfed05af376021f6d775b0b6453e31f6f28490;hb=338db8de5f2cc289641f5f947f0fa1ef4070c3f2;hp=756f24f3557dc4dbd2e22c730289fca2f44dff04;hpb=da9559cff40c0c7e1f0a7b309487eb133cb2b0a8;p=collectd.git diff --git a/src/curl_json.c b/src/curl_json.c index 756f24f3..dedfed05 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; @@ -91,13 +91,12 @@ 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; - cdtime_t interval; int timeout; curl_stats_t *stats; @@ -226,11 +225,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; @@ -261,7 +255,6 @@ static int cj_cb_number(void *ctx, const char *number, yajl_len_t number_len) { value_t vt; int status = parse_value(buffer, &vt, type); if (status != 0) { - NOTICE("curl_json plugin: Unable to parse number: \"%s\"", buffer); cj_advance_array(ctx); return CJ_CB_CONTINUE; } @@ -292,6 +285,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])); @@ -323,7 +323,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"); @@ -333,7 +333,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); } @@ -622,9 +622,6 @@ static int cj_init_curl(cj_t *db) /* {{{ */ #ifdef HAVE_CURLOPT_TIMEOUT_MS if (db->timeout >= 0) curl_easy_setopt(db->curl, CURLOPT_TIMEOUT_MS, (long)db->timeout); - else if (db->interval > 0) - curl_easy_setopt(db->curl, CURLOPT_TIMEOUT_MS, - (long)CDTIME_T_TO_MS(db->interval)); else curl_easy_setopt(db->curl, CURLOPT_TIMEOUT_MS, (long)CDTIME_T_TO_MS(plugin_get_interval())); @@ -637,6 +634,7 @@ static int cj_config_add_url(oconfig_item_t *ci) /* {{{ */ { cj_t *db; int status = 0; + cdtime_t interval = 0; if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) { WARNING("curl_json plugin: The `URL' block " @@ -697,7 +695,7 @@ static int cj_config_add_url(oconfig_item_t *ci) /* {{{ */ else if (strcasecmp("Key", child->key) == 0) status = cj_config_add_key(db, child); else if (strcasecmp("Interval", child->key) == 0) - status = cf_util_get_cdtime(child, &db->interval); + status = cf_util_get_cdtime(child, &interval); else if (strcasecmp("Timeout", child->key) == 0) status = cf_util_get_int(child, &db->timeout); else if (strcasecmp("Statistics", child->key) == 0) { @@ -735,8 +733,7 @@ static int cj_config_add_url(oconfig_item_t *ci) /* {{{ */ cb_name = ssnprintf_alloc("curl_json-%s-%s", db->instance, db->url ? db->url : db->sock); - plugin_register_complex_read(/* group = */ NULL, cb_name, cj_read, - /* interval = */ db->interval, + plugin_register_complex_read(/* group = */ NULL, cb_name, cj_read, interval, &(user_data_t){ .data = db, .free_func = cj_free, }); @@ -814,15 +811,11 @@ static void cj_submit_impl(cj_t *db, cj_key_t *key, value_t *value) /* {{{ */ sstrncpy(vl.plugin_instance, db->instance, sizeof(vl.plugin_instance)); sstrncpy(vl.type, key->type, sizeof(vl.type)); - if (db->interval > 0) - vl.interval = db->interval; - plugin_dispatch_values(&vl); } /* }}} int cj_submit_impl */ static int cj_sock_perform(cj_t *db) /* {{{ */ { - char errbuf[1024]; struct sockaddr_un sa_unix = { .sun_family = AF_UNIX, }; @@ -833,8 +826,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; } @@ -845,8 +837,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; }