dovecot-2.2: Added json_append_escaped()

dovecot at dovecot.org dovecot at dovecot.org
Sat Dec 1 06:55:05 EET 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/009287402687
changeset: 15441:009287402687
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Dec 01 06:54:55 2012 +0200
description:
Added json_append_escaped()

diffstat:

 src/lib/json-parser.c |  35 +++++++++++++++++++++++++++++++++++
 src/lib/json-parser.h |   3 +++
 2 files changed, 38 insertions(+), 0 deletions(-)

diffs (53 lines):

diff -r 9cab24687819 -r 009287402687 src/lib/json-parser.c
--- a/src/lib/json-parser.c	Sat Dec 01 02:41:34 2012 +0200
+++ b/src/lib/json-parser.c	Sat Dec 01 06:54:55 2012 +0200
@@ -626,3 +626,38 @@
 	}
 	return ret;
 }
+
+void json_append_escaped(string_t *dest, const char *src)
+{
+	for (; *src != '\0'; src++) {
+		switch (*src) {
+		case '\b':
+			str_append(dest, "\\b");
+			break;
+		case '\f':
+			str_append(dest, "\\f");
+			break;
+		case '\n':
+			str_append(dest, "\\n");
+			break;
+		case '\r':
+			str_append(dest, "\\r");
+			break;
+		case '\t':
+			str_append(dest, "\\t");
+			break;
+		case '"':
+			str_append(dest, "\\\"");
+			break;
+		case '\\':
+			str_append(dest, "\\\\");
+			break;
+		default:
+			if (*src < 32)
+				str_printfa(dest, "\\u%04x", *src);
+			else
+				str_append_c(dest, *src);
+			break;
+		}
+	}
+}
diff -r 9cab24687819 -r 009287402687 src/lib/json-parser.h
--- a/src/lib/json-parser.h	Sat Dec 01 02:41:34 2012 +0200
+++ b/src/lib/json-parser.h	Sat Dec 01 06:54:55 2012 +0200
@@ -36,4 +36,7 @@
 int json_parse_next_stream(struct json_parser *parser,
 			   struct istream **input_r);
 
+/* Append data to already opened JSON string. */
+void json_append_escaped(string_t *dest, const char *src);
+
 #endif


More information about the dovecot-cvs mailing list