itamarjp / rpms / gdm

Forked from rpms/gdm 6 years ago
Clone
60b9c65
--- gdm-2.18.0/gui/gdmlogin.c.dont-expect-utf8	2007-04-05 12:02:47.000000000 -0400
60b9c65
+++ gdm-2.18.0/gui/gdmlogin.c	2007-04-05 12:03:24.000000000 -0400
60b9c65
@@ -2042,8 +2042,8 @@
60b9c65
 	    char *label;
60b9c65
 	    char *login, *gecos;
60b9c65
 
60b9c65
-	    login = g_markup_escape_text (usr->login, -1);
60b9c65
-	    gecos = g_markup_escape_text (usr->gecos, -1);
60b9c65
+	    login = gdm_common_text_to_escaped_utf8 (usr->login);
60b9c65
+	    gecos = gdm_common_text_to_escaped_utf8 (usr->gecos, -1);
60b9c65
 
60b9c65
 	    label = g_strdup_printf ("%s\n%s",
60b9c65
 				     login,
60b9c65
--- gdm-2.18.0/gui/gdmcommon.c.dont-expect-utf8	2007-04-05 11:59:23.000000000 -0400
60b9c65
+++ gdm-2.18.0/gui/gdmcommon.c	2007-04-05 12:02:29.000000000 -0400
60b9c65
@@ -379,6 +379,29 @@
60b9c65
 	return pixbuf;
2b7de60
 }
2b7de60
 
60b9c65
+gchar *
60b9c65
+gdm_common_text_to_escaped_utf8 (const char *text)
2b7de60
+{
2b7de60
+	gchar *utf8_string, *escaped_string, *p;
2b7de60
+        const gchar *q;
2b7de60
+
60b9c65
+	utf8_string = g_strdup (text);
2b7de60
+        p = utf8_string;
2b7de60
+	while ((*p != '\0') && 
2b7de60
+               !g_utf8_validate (p, -1, &q)) {
2b7de60
+                p = (gchar *) q;
2b7de60
+		*p = '?';
2b7de60
+		p++;
2b7de60
+	}
2b7de60
+
2b7de60
+	g_assert (g_utf8_validate (utf8_string, -1, NULL));
2b7de60
+
2b7de60
+	escaped_string = g_markup_escape_text (utf8_string, -1);
2b7de60
+        g_free (utf8_string);
2b7de60
+
2b7de60
+	return escaped_string;
2b7de60
+}
2b7de60
+
60b9c65
 gchar * 
60b9c65
 gdm_common_get_config_file (void)
2b7de60
 {
60b9c65
--- gdm-2.18.0/gui/gdmcommon.h.dont-expect-utf8	2007-04-05 11:59:37.000000000 -0400
60b9c65
+++ gdm-2.18.0/gui/gdmcommon.h	2007-04-05 12:00:40.000000000 -0400
60b9c65
@@ -58,6 +58,7 @@
60b9c65
                                              guint       max_width,
60b9c65
                                              guint       max_height);
60b9c65
 
60b9c65
+gchar*	  gdm_common_text_to_escaped_utf8   (const char *text);
60b9c65
 gchar*	  gdm_common_get_config_file	    (void);
60b9c65
 gchar*	  gdm_common_get_custom_config_file (void);
60b9c65
 gboolean  gdm_common_select_time_format	    (void);
60b9c65
--- gdm-2.18.0/gui/greeter/greeter_item_ulist.c.dont-expect-utf8	2007-04-05 11:59:05.000000000 -0400
60b9c65
+++ gdm-2.18.0/gui/greeter/greeter_item_ulist.c	2007-04-05 12:02:09.000000000 -0400
60b9c65
@@ -181,9 +181,9 @@
2b7de60
 		gboolean    active;
2b7de60
 
2b7de60
 		if (usr->gecos && strcmp (usr->gecos, "") != 0) {
2b7de60
-			name = g_markup_escape_text (usr->gecos, -1);
60b9c65
+			name = gdm_common_text_to_escaped_utf8 (usr->gecos);
2b7de60
 		} else {
2b7de60
-			name = g_markup_escape_text (usr->login, -1);
60b9c65
+			name = gdm_common_text_to_escaped_utf8 (usr->login);
2b7de60
 		}
2b7de60
 
2b7de60
 		if (g_hash_table_lookup (displays_hash, usr->login))