mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-13 04:46:15 +01:00
Merge branch 'keyfile-backend-strings' into 'master'
keyfile settings: Accept unquoted strings See merge request GNOME/glib!603
This commit is contained in:
commit
3d9727c0b8
@ -225,6 +225,25 @@ get_from_keyfile (GKeyfileSettingsBackend *kfsb,
|
||||
if (str)
|
||||
{
|
||||
return_value = g_variant_parse (type, str, NULL, NULL, NULL);
|
||||
if (return_value == NULL &&
|
||||
g_variant_type_equal (type, G_VARIANT_TYPE_STRING) &&
|
||||
str[0] != '\"')
|
||||
{
|
||||
GString *s = g_string_sized_new (strlen (str) + 2);
|
||||
char *p = str;
|
||||
|
||||
g_string_append_c (s, '\"');
|
||||
while (*p)
|
||||
{
|
||||
if (*p == '\"')
|
||||
g_string_append_c (s, '\\');
|
||||
g_string_append_c (s, *p);
|
||||
p++;
|
||||
}
|
||||
g_string_append_c (s, '\"');
|
||||
return_value = g_variant_parse (type, s->str, NULL, NULL, NULL);
|
||||
g_string_free (s, TRUE);
|
||||
}
|
||||
g_free (str);
|
||||
}
|
||||
|
||||
|
@ -1770,6 +1770,23 @@ test_keyfile (void)
|
||||
g_assert_cmpstr (str, ==, "howdy");
|
||||
g_free (str);
|
||||
|
||||
/* Now check setting a string without quotes */
|
||||
called = FALSE;
|
||||
g_signal_connect (settings, "changed::greeting", G_CALLBACK (key_changed_cb), &called);
|
||||
|
||||
g_key_file_set_string (keyfile, "tests", "greeting", "he\"l🤗uń");
|
||||
g_free (data);
|
||||
data = g_key_file_to_data (keyfile, &len, NULL);
|
||||
g_file_set_contents ("keyfile/gsettings.store", data, len, &error);
|
||||
g_assert_no_error (error);
|
||||
while (!called)
|
||||
g_main_context_iteration (NULL, FALSE);
|
||||
g_signal_handlers_disconnect_by_func (settings, key_changed_cb, &called);
|
||||
|
||||
str = g_settings_get_string (settings, "greeting");
|
||||
g_assert_cmpstr (str, ==, "he\"l🤗uń");
|
||||
g_free (str);
|
||||
|
||||
g_settings_set (settings, "farewell", "s", "cheerio");
|
||||
|
||||
called = FALSE;
|
||||
|
Loading…
Reference in New Issue
Block a user