X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fwrite_mongodb.c;h=a6b39d306470a7d92bf615fe08abe9466b5c64a2;hp=f585a39660b55582ea18b618f708a78558c48938;hb=77ca1a45bab2f6adf9301723d0db68e5813a6d98;hpb=2c59754399236dee51c68b0b624242c61f89c4c0 diff --git a/src/write_mongodb.c b/src/write_mongodb.c index f585a396..a6b39d30 100644 --- a/src/write_mongodb.c +++ b/src/write_mongodb.c @@ -93,10 +93,10 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ BSON_APPEND_UTF8(ret, "type_instance", vl->type_instance); BSON_APPEND_ARRAY_BEGIN(ret, "values", &subarray); /* {{{ */ - for (int i = 0; i < ds->ds_num; i++) { + for (size_t i = 0; i < ds->ds_num; i++) { char key[16]; - ssnprintf(key, sizeof(key), "%i", i); + snprintf(key, sizeof(key), "%" PRIsz, i); if (ds->ds[i].type == DS_TYPE_GAUGE) BSON_APPEND_DOUBLE(&subarray, key, vl->values[i].gauge); @@ -109,7 +109,7 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ else if (ds->ds[i].type == DS_TYPE_ABSOLUTE) BSON_APPEND_INT64(&subarray, key, vl->values[i].absolute); else { - ERROR("write_mongodb plugin: Unknown ds_type %d for index %d", + ERROR("write_mongodb plugin: Unknown ds_type %d for index %" PRIsz, ds->ds[i].type, i); bson_destroy(ret); return NULL; @@ -118,10 +118,10 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ bson_append_array_end(ret, &subarray); /* }}} values */ BSON_APPEND_ARRAY_BEGIN(ret, "dstypes", &subarray); /* {{{ */ - for (int i = 0; i < ds->ds_num; i++) { + for (size_t i = 0; i < ds->ds_num; i++) { char key[16]; - ssnprintf(key, sizeof(key), "%i", i); + snprintf(key, sizeof(key), "%" PRIsz, i); if (store_rates) BSON_APPEND_UTF8(&subarray, key, "gauge"); @@ -131,10 +131,10 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ bson_append_array_end(ret, &subarray); /* }}} dstypes */ BSON_APPEND_ARRAY_BEGIN(ret, "dsnames", &subarray); /* {{{ */ - for (int i = 0; i < ds->ds_num; i++) { + for (size_t i = 0; i < ds->ds_num; i++) { char key[16]; - ssnprintf(key, sizeof(key), "%i", i); + snprintf(key, sizeof(key), "%" PRIsz, i); BSON_APPEND_UTF8(&subarray, key, ds->ds[i].name); } bson_append_array_end(ret, &subarray); /* }}} dsnames */ @@ -144,7 +144,7 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ size_t error_location; if (!bson_validate(ret, BSON_VALIDATE_UTF8, &error_location)) { ERROR("write_mongodb plugin: Error in generated BSON document " - "at byte %zu", + "at byte %" PRIsz, error_location); bson_destroy(ret); return NULL; @@ -156,21 +156,16 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ static int wm_initialize(wm_node_t *node) /* {{{ */ { char *uri; - size_t uri_length; - char const *format_string; - if (node->connected) { + if (node->connected) return 0; - } INFO("write_mongodb plugin: Connecting to [%s]:%d", node->host, node->port); if ((node->db != NULL) && (node->user != NULL) && (node->passwd != NULL)) { - format_string = "mongodb://%s:%s@%s:%d/?authSource=%s"; - uri_length = strlen(format_string) + strlen(node->user) + - strlen(node->passwd) + strlen(node->host) + 5 + - strlen(node->db) + 1; - if ((uri = calloc(1, uri_length)) == NULL) { + uri = ssnprintf_alloc("mongodb://%s:%s@%s:%d/?authSource=%s", node->user, + node->passwd, node->host, node->port, node->db); + if (uri == NULL) { ERROR("write_mongodb plugin: Not enough memory to assemble " "authentication string."); mongoc_client_destroy(node->client); @@ -178,8 +173,6 @@ static int wm_initialize(wm_node_t *node) /* {{{ */ node->connected = 0; return -1; } - ssnprintf(uri, uri_length, format_string, node->user, node->passwd, - node->host, node->port, node->db); node->client = mongoc_client_new(uri); if (!node->client) { @@ -191,9 +184,8 @@ static int wm_initialize(wm_node_t *node) /* {{{ */ return -1; } } else { - format_string = "mongodb://%s:%d"; - uri_length = strlen(format_string) + strlen(node->host) + 5 + 1; - if ((uri = calloc(1, uri_length)) == NULL) { + uri = ssnprintf_alloc("mongodb://%s:%d", node->host, node->port); + if (uri == NULL) { ERROR("write_mongodb plugin: Not enough memory to assemble " "authentication string."); mongoc_client_destroy(node->client); @@ -201,7 +193,6 @@ static int wm_initialize(wm_node_t *node) /* {{{ */ node->connected = 0; return -1; } - snprintf(uri, uri_length, format_string, node->host, node->port); node->client = mongoc_client_new(uri); if (!node->client) { @@ -211,8 +202,8 @@ static int wm_initialize(wm_node_t *node) /* {{{ */ sfree(uri); return -1; } + sfree(uri); } - sfree(uri); node->database = mongoc_client_get_database(node->client, "collectd"); if (!node->database) { @@ -375,9 +366,9 @@ static int wm_config_node(oconfig_item_t *ci) /* {{{ */ } if (status == 0) { - char cb_name[DATA_MAX_NAME_LEN]; + char cb_name[sizeof("write_mongodb/") + DATA_MAX_NAME_LEN]; - ssnprintf(cb_name, sizeof(cb_name), "write_mongodb/%s", node->name); + snprintf(cb_name, sizeof(cb_name), "write_mongodb/%s", node->name); status = plugin_register_write(cb_name, wm_write,