gdm r5859 - in trunk: . gui/simple-greeter



Author: halfline
Date: Mon Feb 25 21:34:06 2008
New Revision: 5859
URL: http://svn.gnome.org/viewvc/gdm?rev=5859&view=rev

Log:
2008-02-25  Ray Strode  <rstrode redhat com>

	* gui/simple-greeter/gdm-languages.c:
	(gdm_parse_language_name):
	update locale parsing regex to cover more
	valid locales


Modified:
   trunk/ChangeLog
   trunk/gui/simple-greeter/gdm-languages.c

Modified: trunk/gui/simple-greeter/gdm-languages.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-languages.c	(original)
+++ trunk/gui/simple-greeter/gdm-languages.c	Mon Feb 25 21:34:06 2008
@@ -98,12 +98,23 @@
         GError     *error;
 
         error = NULL;
-        re = g_regex_new ("(?P<language>[a-zA-Z]+)(_(?P<territory>[a-zA-Z]+))?(.(?P<codeset>[0-9a-zA-Z]+))?(@(?P<modifier>[0-9a-zA-Z]+))?", 0, 0, &error);
+        re = g_regex_new ("^(?P<language>[^_  [:space:]]+)"
+                          "(_(?P<territory>[[:upper:]]+))?"
+                          "(.(?P<codeset>[-_0-9a-zA-Z]+))?"
+                          "(@(?P<modifier>[[:ascii:]]+))?$",
+                          0, 0, &error);
         if (re == NULL) {
                 g_critical (error->message);
+                return;
         }
 
-        g_regex_match (re, name, 0, &match_info);
+        if (!g_regex_match (re, name, 0, &match_info) ||
+            g_match_info_is_partial_match (match_info)) {
+                g_match_info_free (match_info);
+                g_regex_unref (re);
+                g_warning ("locale %s isn't valid\n", name);
+                return;
+        }
 
         res = g_match_info_matches (match_info);
         if (! res) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]