aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/util.c
diff options
context:
space:
mode:
authorGravatar Brendan Taylor <whateley@gmail.com>2011-02-17 13:09:50 -0700
committerGravatar Brendan Taylor <whateley@gmail.com>2011-02-17 13:09:50 -0700
commit67af28c8d147e35c91ea91b0ddf51680d9feb475 (patch)
tree697e96acc530fefdc6ab6189d95e23127cc127cc /src/util.c
parentb7a47b3f58e6fa05d56577ea6425d353a41ddb86 (diff)
parente3b04d3ae9fb6dfeff5e6099784586b54591814e (diff)
Merge branch 'escaped_events' into experimental
Conflicts: src/util.c
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c
index cc51048..8f6c349 100644
--- a/src/util.c
+++ b/src/util.c
@@ -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;
+}