mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 23:16:14 +01:00
If the group is already there, make it current. (#385910, Joe Halliwell)
2006-12-14 Matthias Clasen <mclasen@redhat.com> * glib/gkeyfile.c (g_key_file_add_group): If the group is already there, make it current. (#385910, Joe Halliwell) * tests/keyfile-test.c: Add a test for duplicate groups/keys.
This commit is contained in:
parent
b6aad8a6f0
commit
966872d789
@ -1,3 +1,10 @@
|
||||
2006-12-14 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* glib/gkeyfile.c (g_key_file_add_group): If the group
|
||||
is already there, make it current. (#385910, Joe Halliwell)
|
||||
|
||||
* tests/keyfile-test.c: Add a test for duplicate groups/keys.
|
||||
|
||||
2006-12-13 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* m4macros/glib-gettext.m4: Require AC_CANONICAL_HOST in
|
||||
|
@ -1,3 +1,8 @@
|
||||
2006-12-14 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* glib/tmpl/keyfile.sgml: Clarify the behaviour
|
||||
wrt. to duplicate keys and groups.
|
||||
|
||||
2006-12-13 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* glib/tmpl/modules.sgml: Point out that valid symbols may be NULL.
|
||||
|
@ -92,6 +92,14 @@ Key and Group names are case-sensitive, for example a group called
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Note that in contrast to the
|
||||
<ulink url="http://freedesktop.org/Standards/desktop-entry-spec">Desktop
|
||||
Entry Specification</ulink>, groups in key files may contain the same
|
||||
key multiple times; the last entry wins. Key files may also contain
|
||||
multiple groups with the same name; they are merged together.
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
|
@ -2887,8 +2887,12 @@ g_key_file_add_group (GKeyFile *key_file,
|
||||
g_return_if_fail (key_file != NULL);
|
||||
g_return_if_fail (group_name != NULL);
|
||||
|
||||
if (g_key_file_lookup_group_node (key_file, group_name) != NULL)
|
||||
return;
|
||||
group = g_key_file_lookup_group (key_file, group_name);
|
||||
if (group != NULL)
|
||||
{
|
||||
key_file->current_group = group;
|
||||
return;
|
||||
}
|
||||
|
||||
group = g_new0 (GKeyFileGroup, 1);
|
||||
group->name = g_strdup (group_name);
|
||||
|
@ -1001,10 +1001,31 @@ test_duplicate_groups (void)
|
||||
"key2=123\n";
|
||||
|
||||
keyfile = load_data (data, 0);
|
||||
check_string_value (keyfile, "Desktop Entry", "key1", "123");
|
||||
check_string_value (keyfile, "Desktop Entry", "key2", "123");
|
||||
|
||||
g_key_file_free (keyfile);
|
||||
}
|
||||
|
||||
/* http://bugzilla.gnome.org/show_bug.cgi?id=385910 */
|
||||
static void
|
||||
test_duplicate_groups2 (void)
|
||||
{
|
||||
GKeyFile *keyfile;
|
||||
const gchar *data =
|
||||
"[A]\n"
|
||||
"foo=bar\n"
|
||||
"[B]\n"
|
||||
"foo=baz\n"
|
||||
"[A]\n"
|
||||
"foo=bang\n";
|
||||
|
||||
keyfile = load_data (data, 0);
|
||||
check_string_value (keyfile, "A", "foo", "bang");
|
||||
check_string_value (keyfile, "B", "foo", "baz");
|
||||
|
||||
g_key_file_free (keyfile);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
@ -1023,6 +1044,7 @@ main (int argc, char *argv[])
|
||||
test_groups ();
|
||||
test_duplicate_keys ();
|
||||
test_duplicate_groups ();
|
||||
test_duplicate_groups2 ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user