X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcore%2Fdata.c;h=54b6d282e6640d755e38457e4dbd497bb995fd32;hb=fd3b58d670103cf729f17f682174ebb60d248a63;hp=81b511b6c48fda961b51e9d770f13da415cabfac;hpb=f274b5e2002b20b64a84b31791d82e5a195bb771;p=sysdb.git diff --git a/src/core/data.c b/src/core/data.c index 81b511b..54b6d28 100644 --- a/src/core/data.c +++ b/src/core/data.c @@ -103,8 +103,24 @@ sdb_data_format(sdb_data_t *datum, sdb_strbuf_t *buf) sdb_strbuf_append(buf, "\"NULL\""); return 0; } - /* TODO: escape special characters */ - sdb_strbuf_append(buf, "\"%s\"", datum->data.string); + { + char tmp[2 * strlen(datum->data.string) + 1]; + size_t i, pos; + + pos = 0; + for (i = 0; i < strlen(datum->data.string); ++i) { + char byte = datum->data.string[i]; + + if ((byte == '\\') || (byte == '"')) { + tmp[pos] = '\\'; + ++pos; + } + tmp[pos] = byte; + ++pos; + } + tmp[pos] = '\0'; + sdb_strbuf_append(buf, "\"%s\"", tmp); + } break; case SDB_TYPE_DATETIME: {