The unified diff between revisions [6eed85a7..] and [65f52f37..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'sqlite-backend.c'
#
#
# patch "sqlite-backend.c"
# from [c9e70f8c69893d31ff04b8b854824f17e95a2d62]
# to [af95cdd5712ae796993989b936e174564c6d3c72]
#
============================================================
--- sqlite-backend.c c9e70f8c69893d31ff04b8b854824f17e95a2d62
+++ sqlite-backend.c af95cdd5712ae796993989b936e174564c6d3c72
@@ -216,7 +216,7 @@ static SqliteDirectory *
}
static SqliteDirectory *
-ss_ensure_directory_exists (SqliteSource *ss, const char *path, GError **error)
+traverse_to_directory (SqliteSource *ss, const char *path, gboolean do_create, GError **error)
{
SqliteDirectory *rv;
char **components;
@@ -243,7 +243,7 @@ ss_ensure_directory_exists (SqliteSource
while (rv && components[i]) {
if (!get_directory (ss, rv, components[i], rv)) {
/* not there, so create it.. */
- if (!create_directory (ss, rv, components[i], rv)) {
+ if (!do_create || !create_directory (ss, rv, components[i], rv)) {
g_free (rv);
rv = NULL;
break;
@@ -256,6 +256,16 @@ ss_ensure_directory_exists (SqliteSource
return rv;
}
+gboolean
+set_value_in_directory (SqliteSource *ss, SqliteDirectory *dir, const char *name, gboolean do_create, GError **error)
+{
+ g_return_val_if_fail (ss != NULL, FALSE);
+ g_return_val_if_fail (dir != NULL, FALSE);
+ g_return_val_if_fail (name != NULL, FALSE);
+
+ return FALSE;
+}
+
/* check that the database looks about right */
static gboolean
verify_database (SqliteSource *ss)
@@ -457,17 +467,24 @@ set_value (GConfSource *source,
const GConfValue *value,
GError **err)
{
+ const char *relative_key;
char *parent;
SqliteDirectory *dir;
gconf_log (GCL_DEBUG, "set_value: %s", key);
parent = gconf_key_directory (key);
- dir = ss_ensure_directory_exists ((SqliteSource *)source, parent, err);
- if (!dir) {
- update_failure (err);
- return;
- }
+ relative_key = gconf_key_key (key);
+ dir = traverse_to_directory ((SqliteSource *)source, parent, TRUE, err);
+ do {
+ if (!dir) {
+ update_failure (err);
+ break;
+ }
+ if (!set_value_in_directory ((SqliteSource *)source, dir, relative_key, TRUE, err)) {
+ update_failure (err);
+ }
+ } while (0);
g_free (parent);
g_free (dir);