summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHavoc Pennington <hp@src.gnome.org>2002-06-02 05:27:01 +0000
committerHavoc Pennington <hp@src.gnome.org>2002-06-02 05:27:01 +0000
commit0a26450327976f2d85f82c79d2d2ec3b68dd4d1e (patch)
tree9278859003694afd78e70088cca1804962c6ba91
parent17a83d083c1bbd9f9983f3dcd5d2e45b0e97f8b5 (diff)
downloadgconf-0a26450327976f2d85f82c79d2d2ec3b68dd4d1e.tar.gz
hacking on branch
-rw-r--r--backends/markup-tree.c32
-rw-r--r--backends/xml-cache.c4
-rw-r--r--backends/xml-dir.c13
-rw-r--r--tests/testbackend.c50
4 files changed, 45 insertions, 54 deletions
diff --git a/backends/markup-tree.c b/backends/markup-tree.c
index d5d0ab4b..3b019a64 100644
--- a/backends/markup-tree.c
+++ b/backends/markup-tree.c
@@ -712,34 +712,6 @@ delete_useless_subdirs (MarkupDir *dir)
}
else
{
- if (subdir->entries == NULL && subdir->subdirs == NULL)
- {
- char *fs_filename;
- struct stat statbuf;
-
- fs_filename = markup_dir_build_path (subdir, TRUE);
-
- if (stat (fs_filename, &statbuf) < 0)
- {
- /* This is some kind of cruft, not an XML directory */
- g_printerr ("failed to stat %s: %s\n", fs_filename, g_strerror (errno));
- }
- else
- {
- load_subdirs (subdir);
- if (statbuf.st_size == 0 && subdir->subdirs == NULL)
- {
- g_print ("Not deleting %s entries_loaded = %d subdirs_loaded = %d "
- "subdir_needs_sync = %d entries_need_save = %d; %d entries %d subdirs\n",
- subdir->name, subdir->entries_loaded, subdir->subdirs_loaded,
- subdir->some_subdir_needs_sync, subdir->entries_need_save,
- g_slist_length (subdir->entries),
- g_slist_length (subdir->subdirs));
- exit (1);
- }
- }
- g_free (fs_filename);
- }
kept_subdirs = g_slist_prepend (kept_subdirs, subdir);
}
@@ -802,7 +774,8 @@ markup_dir_sync (MarkupDir *dir)
some_useless_entries = FALSE;
some_useless_subdirs = FALSE;
-
+
+#if 0
{
MarkupDir *parent;
@@ -815,6 +788,7 @@ markup_dir_sync (MarkupDir *dir)
g_print ("%s\n", dir->name);
}
+#endif
/* We assume our parent directories have all been synced, before
* we are synced. So we don't need to mkdir() parent directories.
diff --git a/backends/xml-cache.c b/backends/xml-cache.c
index 688aa6b6..3b158d96 100644
--- a/backends/xml-cache.c
+++ b/backends/xml-cache.c
@@ -389,6 +389,8 @@ cache_lookup (Cache *cache,
{
cache_insert (cache, dir);
cache_add_to_parent (cache, dir);
+ cache_set_nonexistent (cache, dir_get_name (dir),
+ FALSE);
}
}
@@ -424,9 +426,9 @@ cache_set_nonexistent (Cache* cache,
key,
&origkey, &origval))
{
- g_free(origkey);
g_hash_table_remove(cache->nonexistent_cache,
key);
+ g_free(origkey);
}
}
}
diff --git a/backends/xml-dir.c b/backends/xml-dir.c
index 9dfaa0fa..cbc01eff 100644
--- a/backends/xml-dir.c
+++ b/backends/xml-dir.c
@@ -374,11 +374,14 @@ dir_sync (Dir *d,
return FALSE;
}
- if (rmdir (d->fs_dirname) != 0)
+ if (strcmp (d->key, "/") != 0) /* don't delete root dir */
{
- gconf_set_error (err, GCONF_ERROR_FAILED, _("Failed to delete \"%s\": %s"),
- d->fs_dirname, strerror (errno));
- return FALSE;
+ if (rmdir (d->fs_dirname) != 0)
+ {
+ gconf_set_error (err, GCONF_ERROR_FAILED, _("Failed to delete \"%s\": %s"),
+ d->fs_dirname, strerror (errno));
+ return FALSE;
+ }
}
if (deleted)
@@ -562,7 +565,7 @@ dir_get_value (Dir* d,
GError** err)
{
Entry* e;
-
+
if (d->doc == NULL)
dir_load_doc(d, err);
diff --git a/tests/testbackend.c b/tests/testbackend.c
index 718293fb..e8ed4bf1 100644
--- a/tests/testbackend.c
+++ b/tests/testbackend.c
@@ -28,6 +28,7 @@
#include <math.h>
static const char **locales = NULL;
+static gboolean sync_enabled = FALSE;
typedef void (* ForeachEntryFunc) (GConfEntry *entry,
int depth,
@@ -134,6 +135,9 @@ sync_and_clear (GConfSource *source)
{
GError *err;
+ if (!sync_enabled)
+ return;
+
err = NULL;
if (!(* source->backend->vtable->sync_all) (source, &err))
{
@@ -919,8 +923,8 @@ check_int_storage (GConfSource *source)
else
{
check (ints[i] == gotten,
- "int set/get pair: `%d' set, `%d' got",
- ints[i], gotten);
+ "int set/get pair %s: `%d' set, `%d' got",
+ *keyp, ints[i], gotten);
}
}
@@ -968,8 +972,8 @@ check_int_storage (GConfSource *source)
else
{
check (ints[i] == gotten,
- "int set/get pair: `%d' set, `%d' got",
- ints[i], gotten);
+ "int set/get pair %s: `%d' set, `%d' got",
+ *keyp, ints[i], gotten);
}
}
@@ -1252,30 +1256,20 @@ print_entry (GConfEntry *entry,
g_free (str);
}
-int
-main (int argc, char **argv)
+static void
+run_all_checks (const char *address)
{
GConfSource *source;
GError *error;
Stats stats;
-
- if (argc != 2)
- {
- g_printerr ("Must specify a config source address on the command line\n");
- return 1;
- }
-
- setlocale (LC_ALL, "");
-
- locales = (const char**) gconf_split_locale (gconf_current_locale ());
-
+
error = NULL;
- source = gconf_resolve_address (argv[1], &error);
+ source = gconf_resolve_address (address, &error);
if (error != NULL)
{
g_printerr ("Could not resolve address: %s\n", error->message);
g_error_free (error);
- return 1;
+ exit (1);
}
g_assert (source != NULL);
@@ -1310,6 +1304,24 @@ main (int argc, char **argv)
gconf_source_free (source);
g_print ("\n\n");
+}
+
+int
+main (int argc, char **argv)
+{
+ if (argc != 2)
+ {
+ g_printerr ("Must specify a config source address on the command line\n");
+ return 1;
+ }
+
+ setlocale (LC_ALL, "");
+
+ locales = (const char**) gconf_split_locale (gconf_current_locale ());
+
+ run_all_checks (argv[1]);
+ sync_enabled = TRUE;
+ run_all_checks (argv[1]);
return 0;
}