Accept '@' in locale names.
authorMatthias Clasen <mclasen@redhat.com>
Mon, 18 Dec 2006 14:13:34 +0000 (14:13 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 18 Dec 2006 14:13:34 +0000 (14:13 +0000)
2006-12-18  Matthias Clasen  <mclasen@redhat.com>

        * glib/gkeyfile.c: Accept '@' in locale names.

ChangeLog
glib/gkeyfile.c
tests/keyfile-test.c

index d4b375c..b014992 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2006-12-18  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gkeyfile.c: Accept '@' in locale names.
+
        * glib/gkeyfile.c: Tighten up the check for allowed
        key and group names.  (#343191, Tommi Komulainen)
 
index a8bbb4a..4e47b65 100644 (file)
@@ -3240,7 +3240,7 @@ g_key_file_is_key_name (const gchar *name)
   if (*q == '[')
     {
       q++;
-      while (*q && (g_unichar_isalnum (g_utf8_get_char (q)) || *q == '-' || *q == '_' || *q == '.'))
+      while (*q && (g_unichar_isalnum (g_utf8_get_char (q)) || *q == '-' || *q == '_' || *q == '.' || *q == '@'))
         q = g_utf8_next_char (q);
 
       if (*q != ']')
index fa8109a..4ad908b 100644 (file)
@@ -755,7 +755,8 @@ test_locale_string (void)
     "key1[de_DE]=v1-de_DE\n"
     "key1[de_DE.UTF8]=v1-de_DE.UTF8\n"
     "key1[fr]=v1-fr\n"
-    "key1[en] =v1-en\n";
+    "key1[en] =v1-en\n"
+    "key1[sr@Latn]=v1-sr\n";
   
   keyfile = load_data (data, G_KEY_FILE_KEEP_TRANSLATIONS);
 
@@ -766,6 +767,7 @@ test_locale_string (void)
   check_locale_string_value (keyfile, "valid", "key1", "fr", "v1-fr");
   check_locale_string_value (keyfile, "valid", "key1", "fr_FR", "v1-fr");
   check_locale_string_value (keyfile, "valid", "key1", "en", "v1-en");
+  check_locale_string_value (keyfile, "valid", "key1", "sr@Latn", "v1-sr");
   
   g_key_file_free (keyfile);