index 355eaf1ce5c5dc85384bcb6912c3a0d740fa522f..699c74e2718706157777096598038132194bd621 100644 (file)
--- a/src/utils_format_json.c
+++ b/src/utils_format_json.c
#include "utils_cache.h"
#include "utils_format_json.h"
-static int escape_string (char *buffer, size_t buffer_size, /* {{{ */
+static int json_escape_string (char *buffer, size_t buffer_size, /* {{{ */
const char *string)
{
size_t src_pos;
#undef BUFFER_ADD
return (0);
-} /* }}} int escape_string */
+} /* }}} int json_escape_string */
static int values_to_json (char *buffer, size_t buffer_size, /* {{{ */
const data_set_t *ds, const value_list_t *vl, int store_rates)
int status;
int i;
- memset (buffer, 0, buffer_size);
+ buffer[0] = 0;
+
+ if (meta == NULL)
+ return (EINVAL);
#define BUFFER_ADD(...) do { \
status = ssnprintf (buffer + offset, buffer_size - offset, \
} while (0)
keys_num = meta_data_toc (meta, &keys);
+ if (keys_num == 0)
+ {
+ sfree (keys);
+ return (0);
+ }
+
for (i = 0; i < keys_num; ++i)
{
int type;
if (meta_data_get_string (meta, key, &value) == 0)
{
char temp[512] = "";
- escape_string (temp, sizeof (temp), value);
+ json_escape_string (temp, sizeof (temp), value);
sfree (value);
BUFFER_ADD (",\"%s\":%s", key, temp);
}
#undef BUFFER_ADD
return (0);
-} /* int meta_data_to_json */
+} /* }}} int meta_data_to_json */
static int value_list_to_json (char *buffer, size_t buffer_size, /* {{{ */
const data_set_t *ds, const value_list_t *vl, int store_rates)
BUFFER_ADD (",\"interval\":%.3f", CDTIME_T_TO_DOUBLE (vl->interval));
#define BUFFER_ADD_KEYVAL(key, value) do { \
- status = escape_string (temp, sizeof (temp), (value)); \
+ status = json_escape_string (temp, sizeof (temp), (value)); \
if (status != 0) \
return (status); \
BUFFER_ADD (",\"%s\":%s", (key), temp); \