@cryptotaxi247 / netdata-1 / commits / ee5e75888

allow streaming strings to be escaped in a json compatible way; #2276

Costa Tsaousis (ktsaou) committed Jun 9, 2017 at 00:48 UTC ee5e75888e5852313ddfea6e7acd1f36cf3afd62
4 files changed +12 -9
src/common.c
+7
@@ -226,6 +226,13 @@ void json_escape_string(char *dst, const char *src, size_t size) {
226 *d = '\0';
227 }
228
229 +void json_fix_string(char *s) {
230 + for( ; *s ;s++) {
231 + if(unlikely(*s == '\\')) *s = '/';
232 + else if(unlikely(*s == '"')) *s = '\'';
233 + }
234 +}
235 +
236 int sleep_usec(usec_t usec) {
237
238 #ifndef NETDATA_WITH_USLEEP
src/common.h
+1
@@ -269,6 +269,7 @@ extern void freez(void *ptr);
269 #endif
270
271 extern void json_escape_string(char *dst, const char *src, size_t size);
272 +extern void json_fix_string(char *s);
273
274 extern void *mymmap(const char *filename, size_t size, int flags, int ksm);
275 extern int memory_file_save(const char *filename, void *mem, size_t size);
src/rrdpush.c
+2 -2
@@ -74,7 +74,7 @@ static inline int need_to_send_chart_definition(RRDSET *st) {
74
75 // sends the current chart definition
76 static inline void send_chart_definition(RRDSET *st) {
77 - buffer_sprintf(st->rrdhost->rrdpush_buffer, "CHART '%s' '%s' '%s' '%s' '%s' '%s' '%s' %ld %d\n"
77 + buffer_sprintf(st->rrdhost->rrdpush_buffer, "CHART \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" %ld %d\n"
78 , st->id
79 , st->name
80 , st->title
@@ -88,7 +88,7 @@ static inline void send_chart_definition(RRDSET *st) {
88
89 RRDDIM *rd;
90 rrddim_foreach_read(rd, st) {
91 - buffer_sprintf(st->rrdhost->rrdpush_buffer, "DIMENSION '%s' '%s' '%s' " COLLECTED_NUMBER_FORMAT " " COLLECTED_NUMBER_FORMAT " '%s %s'\n"
91 + buffer_sprintf(st->rrdhost->rrdpush_buffer, "DIMENSION \"%s\" \"%s\" \"%s\" " COLLECTED_NUMBER_FORMAT " " COLLECTED_NUMBER_FORMAT " \"%s %s\"\n"
92 , rd->id
93 , rd->name
94 , rrd_algorithm_name(rd->algorithm)
src/rrdset.c
+2 -7
@@ -569,13 +569,8 @@ RRDSET *rrdset_create_custom(
569 if(name && *name) rrdset_set_name(st, name);
570 else rrdset_set_name(st, id);
571
572 - {
573 - char varvalue[CONFIG_MAX_VALUE + 1];
574 - char varvalue2[CONFIG_MAX_VALUE + 1];
575 - snprintfz(varvalue, CONFIG_MAX_VALUE, "%s", title?title:"");
576 - json_escape_string(varvalue2, varvalue, sizeof(varvalue2));
577 - st->title = config_get(st->config_section, "title", varvalue2);
578 - }
572 + st->title = config_get(st->config_section, "title", title);
573 + json_fix_string(st->title);
574
575 st->rrdfamily = rrdfamily_create(host, st->family);
576