mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-05-20 12:32:10 +02: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>
|
2006-12-13 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* m4macros/glib-gettext.m4: Require AC_CANONICAL_HOST in
|
* 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>
|
2006-12-13 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* glib/tmpl/modules.sgml: Point out that valid symbols may be NULL.
|
* 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>
|
</itemizedlist>
|
||||||
</para>
|
</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 ##### -->
|
<!-- ##### SECTION See_Also ##### -->
|
||||||
<para>
|
<para>
|
||||||
|
|
||||||
|
@ -2887,8 +2887,12 @@ g_key_file_add_group (GKeyFile *key_file,
|
|||||||
g_return_if_fail (key_file != NULL);
|
g_return_if_fail (key_file != NULL);
|
||||||
g_return_if_fail (group_name != NULL);
|
g_return_if_fail (group_name != NULL);
|
||||||
|
|
||||||
if (g_key_file_lookup_group_node (key_file, group_name) != NULL)
|
group = g_key_file_lookup_group (key_file, group_name);
|
||||||
return;
|
if (group != NULL)
|
||||||
|
{
|
||||||
|
key_file->current_group = group;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
group = g_new0 (GKeyFileGroup, 1);
|
group = g_new0 (GKeyFileGroup, 1);
|
||||||
group->name = g_strdup (group_name);
|
group->name = g_strdup (group_name);
|
||||||
|
@ -1001,10 +1001,31 @@ test_duplicate_groups (void)
|
|||||||
"key2=123\n";
|
"key2=123\n";
|
||||||
|
|
||||||
keyfile = load_data (data, 0);
|
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);
|
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
|
int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
@ -1023,6 +1044,7 @@ main (int argc, char *argv[])
|
|||||||
test_groups ();
|
test_groups ();
|
||||||
test_duplicate_keys ();
|
test_duplicate_keys ();
|
||||||
test_duplicate_groups ();
|
test_duplicate_groups ();
|
||||||
|
test_duplicate_groups2 ();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user