+2006-12-19 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gkeyfile.c (g_key_file_is_key_name): Accept
+ '/', '+' and '.' in key names, since gnome-vfs uses
+ mime types as keys in some cache.
+
+ * tests/keyfile-test.c: Tests for the above.
+
2006-12-18 Matthias Clasen <mclasen@redhat.com>
* configure.in: Fix the broken poll test. (#387260,
G_KEY_FILE_ERROR,
G_KEY_FILE_ERROR_PARSE);
- /* + in key name */
- data = "[a]\n"
- "key+foo=123\n";
- keyfile = g_key_file_new ();
- g_key_file_load_from_data (keyfile, data, -1, 0, &error);
- g_key_file_free (keyfile);
- check_error (&error,
- G_KEY_FILE_ERROR,
- G_KEY_FILE_ERROR_PARSE);
-
/* control char in key name */
data = "[a]\n"
"key\tfoo=123\n";
keyfile = g_key_file_new ();
g_key_file_set_string (keyfile, "a", "x", "123");
- g_key_file_set_string (keyfile, "a", "key+foo", "123");
- value = g_key_file_get_string (keyfile, "a", "key+foo", &error);
- check_error (&error,
- G_KEY_FILE_ERROR,
- G_KEY_FILE_ERROR_KEY_NOT_FOUND);
- g_key_file_free (keyfile);
-
- keyfile = g_key_file_new ();
- g_key_file_set_string (keyfile, "a", "x", "123");
g_key_file_set_string (keyfile, "a", "key\tfoo", "123");
value = g_key_file_get_string (keyfile, "a", "key\tfoo", &error);
check_error (&error,
keyfile = g_key_file_new ();
g_key_file_set_string (keyfile, "a", "x", "123");
+
+ /* Unicode key */
g_key_file_set_string (keyfile, "a", "\xc2\xbd", "123");
check_string_value (keyfile, "a", "\xc2\xbd", "123");
+
+ /* Keys with / + . (as used by the gnome-vfs mime cache) */
+ g_key_file_set_string (keyfile, "a", "foo/bar", "/");
+ check_string_value (keyfile, "a", "foo/bar", "/");
+ g_key_file_set_string (keyfile, "a", "foo+bar", "+");
+ check_string_value (keyfile, "a", "foo+bar", "+");
+ g_key_file_set_string (keyfile, "a", "foo.bar", ".");
+ check_string_value (keyfile, "a", "foo.bar", ".");
+
g_key_file_free (keyfile);
}