diff options
author | Brendan Taylor <whateley@gmail.com> | 2011-02-17 13:09:50 -0700 |
---|---|---|
committer | Brendan Taylor <whateley@gmail.com> | 2011-02-17 13:09:50 -0700 |
commit | 67af28c8d147e35c91ea91b0ddf51680d9feb475 (patch) | |
tree | 697e96acc530fefdc6ab6189d95e23127cc127cc /src/util.c | |
parent | b7a47b3f58e6fa05d56577ea6425d353a41ddb86 (diff) | |
parent | e3b04d3ae9fb6dfeff5e6099784586b54591814e (diff) |
Merge branch 'escaped_events' into experimental
Conflicts:
src/util.c
Diffstat (limited to 'src/util.c')
-rw-r--r-- | src/util.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -148,3 +148,33 @@ gchar* argv_idx(const GArray *a, const guint idx) { return g_array_index(a, gchar*, idx); } + +GString * +append_escaped (GString *dest, const gchar *src) { + g_assert(dest); + g_assert(src); + + // Hint that we are going to append another string. + int oldlen = dest->len; + g_string_set_size (dest, dest->len + strlen(src) * 2); + g_string_truncate (dest, oldlen); + + // Append src char by char with baddies escaped + for (const gchar *p = src; *p; p++) { + switch (*p) { + case '\\': + g_string_append (dest, "\\\\"); + break; + case '\'': + g_string_append (dest, "\\'"); + break; + case '\n': + g_string_append (dest, "\\n"); + break; + default: + g_string_append_c (dest, *p); + break; + } + } + return dest; +} |