mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-06-05 20:30:07 +02: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)
|
if (str)
|
||||||
{
|
{
|
||||||
return_value = g_variant_parse (type, str, NULL, NULL, NULL);
|
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);
|
g_free (str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1770,6 +1770,23 @@ test_keyfile (void)
|
|||||||
g_assert_cmpstr (str, ==, "howdy");
|
g_assert_cmpstr (str, ==, "howdy");
|
||||||
g_free (str);
|
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");
|
g_settings_set (settings, "farewell", "s", "cheerio");
|
||||||
|
|
||||||
called = FALSE;
|
called = FALSE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user