[glib/wip/nacho/registry-writable: 2/3] registrybackend: get whether a backend is writable or not
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/nacho/registry-writable: 2/3] registrybackend: get whether a backend is writable or not
- Date: Thu, 4 Feb 2016 11:45:46 +0000 (UTC)
commit 020b41ed836bbe334ad219314e44d2cf736bd02d
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Mon Feb 1 17:17:47 2016 +0100
registrybackend: get whether a backend is writable or not
gio/gregistrysettingsbackend.c | 31 ++++++++++++++++++++++++++++++-
1 files changed, 30 insertions(+), 1 deletions(-)
---
diff --git a/gio/gregistrysettingsbackend.c b/gio/gregistrysettingsbackend.c
index 3a97651..8105be6 100644
--- a/gio/gregistrysettingsbackend.c
+++ b/gio/gregistrysettingsbackend.c
@@ -1151,11 +1151,40 @@ g_registry_backend_reset (GSettingsBackend *backend,
g_settings_backend_changed (backend, key_name, origin_tag);
}
-/* Not implemented and probably beyond the scope of this backend */
static gboolean
g_registry_backend_get_writable (GSettingsBackend *backend,
const gchar *key_name)
{
+ GRegistryBackend *self = G_REGISTRY_BACKEND (backend);
+ gchar *path_name;
+ gunichar2 *path_namew;
+ gchar *value_name;
+ HKEY hpath;
+ LONG result;
+
+ path_name = parse_key (key_name, self->base_path, &value_name);
+ path_namew = g_utf8_to_utf16 (path_name, -1, NULL, NULL, NULL);
+
+ /* Note: we create the key if it wasn't created yet, but it is not much
+ * of a problem since at the end of the day we have to create it anyway
+ * to read or to write from it
+ */
+ result = RegCreateKeyExW (HKEY_CURRENT_USER, path_namew, 0, NULL, 0,
+ KEY_WRITE, NULL, &hpath, NULL);
+ g_free (path_namew);
+
+ if (result != ERROR_SUCCESS)
+ {
+ trace ("Error opening/creating key to check writability: %s.\n",
+ path_name);
+ g_free (path_name);
+
+ return FALSE;
+ }
+
+ g_free (path_name);
+ RegCloseKey (hpath);
+
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]