From f361d10ca1e9f65e588a9d4c007aaf38b0ff58b1 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Wed, 31 Jul 2002 16:55:28 +0000 Subject: [PATCH] Avoid using g_strescape(), since it mangles UTF-8, (#89479, Yao Zhang.) Wed Jul 31 12:50:51 2002 Owen Taylor * gtk/queryimmodules.c: Avoid using g_strescape(), since it mangles UTF-8, (#89479, Yao Zhang.) --- ChangeLog | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ ChangeLog.pre-2-2 | 5 +++++ ChangeLog.pre-2-4 | 5 +++++ ChangeLog.pre-2-6 | 5 +++++ ChangeLog.pre-2-8 | 5 +++++ gtk/queryimmodules.c | 30 +++++++++++++++++++++++++++++- 7 files changed, 59 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0b59d14e60..5e1fae2af5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Jul 31 12:50:51 2002 Owen Taylor + + * gtk/queryimmodules.c: Avoid using g_strescape(), + since it mangles UTF-8, (#89479, Yao Zhang.) + Tue Jul 30 19:09:46 2002 Owen Taylor * gtk/gtkrange.c (gtk_range_scroll_event): Handle diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 0b59d14e60..5e1fae2af5 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Wed Jul 31 12:50:51 2002 Owen Taylor + + * gtk/queryimmodules.c: Avoid using g_strescape(), + since it mangles UTF-8, (#89479, Yao Zhang.) + Tue Jul 30 19:09:46 2002 Owen Taylor * gtk/gtkrange.c (gtk_range_scroll_event): Handle diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 0b59d14e60..5e1fae2af5 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +Wed Jul 31 12:50:51 2002 Owen Taylor + + * gtk/queryimmodules.c: Avoid using g_strescape(), + since it mangles UTF-8, (#89479, Yao Zhang.) + Tue Jul 30 19:09:46 2002 Owen Taylor * gtk/gtkrange.c (gtk_range_scroll_event): Handle diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 0b59d14e60..5e1fae2af5 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Wed Jul 31 12:50:51 2002 Owen Taylor + + * gtk/queryimmodules.c: Avoid using g_strescape(), + since it mangles UTF-8, (#89479, Yao Zhang.) + Tue Jul 30 19:09:46 2002 Owen Taylor * gtk/gtkrange.c (gtk_range_scroll_event): Handle diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 0b59d14e60..5e1fae2af5 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Wed Jul 31 12:50:51 2002 Owen Taylor + + * gtk/queryimmodules.c: Avoid using g_strescape(), + since it mangles UTF-8, (#89479, Yao Zhang.) + Tue Jul 30 19:09:46 2002 Owen Taylor * gtk/gtkrange.c (gtk_range_scroll_event): Handle diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 0b59d14e60..5e1fae2af5 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Wed Jul 31 12:50:51 2002 Owen Taylor + + * gtk/queryimmodules.c: Avoid using g_strescape(), + since it mangles UTF-8, (#89479, Yao Zhang.) + Tue Jul 30 19:09:46 2002 Owen Taylor * gtk/gtkrange.c (gtk_range_scroll_event): Handle diff --git a/gtk/queryimmodules.c b/gtk/queryimmodules.c index defdb8faf3..1a0f063705 100644 --- a/gtk/queryimmodules.c +++ b/gtk/queryimmodules.c @@ -41,10 +41,38 @@ #include "gtk/gtkrc.h" #include "gtk/gtkimmodule.h" +static char * +escape_string (const char *str) +{ + GString *result = g_string_new (""); + + while (TRUE) + { + char c = *str++; + + switch (c) + { + case '\0': + goto done; + case '\n': + g_string_append (result, "\\n"); + break; + case '\"': + g_string_append (result, "\\\""); + break; + default: + g_string_append_c (result, c); + } + } + + done: + return g_string_free (result, FALSE); +} + static void print_escaped (const char *str) { - char *tmp = g_strescape (str, NULL); + char *tmp = escape_string (str, NULL); printf ("\"%s\" ", tmp); g_free (tmp); }