[gvfs] Add metabuilder_free
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Subject: [gvfs] Add metabuilder_free
- Date: Tue, 23 Jun 2009 11:10:22 -0400 (EDT)
commit dfa3f13abb7d34aa62e2c817b1ddabb448b969f9
Author: Alexander Larsson <alexl redhat com>
Date: Thu Jun 18 18:43:41 2009 +0200
Add metabuilder_free
metadata/metabuilder.c | 38 ++++++++++++++++++++++++++++++++++++--
metadata/metabuilder.h | 2 ++
2 files changed, 38 insertions(+), 2 deletions(-)
---
diff --git a/metadata/metabuilder.c b/metadata/metabuilder.c
index 85b7a83..8e0fff2 100644
--- a/metadata/metabuilder.c
+++ b/metadata/metabuilder.c
@@ -27,6 +27,14 @@ meta_builder_new (void)
return builder;
}
+void
+meta_builder_free (MetaBuilder *builder)
+{
+ if (builder->root)
+ metafile_free (builder->root);
+ g_free (builder);
+}
+
static gint
compare_metafile (gconstpointer a,
gconstpointer b)
@@ -64,6 +72,32 @@ metafile_new (const char *name,
return f;
}
+static void
+metadata_free (MetaData *data)
+{
+ g_free (data->key);
+ if (data->is_list)
+ {
+ g_list_foreach (data->values, (GFunc)g_free, NULL);
+ g_list_free (data->values);
+ }
+ else
+ g_free (data->value);
+
+ g_free (data);
+}
+
+void
+metafile_free (MetaFile *file)
+{
+ g_free (file->name);
+ g_list_foreach (file->children, (GFunc)metafile_free, NULL);
+ g_list_free (file->children);
+ g_list_foreach (file->data, (GFunc)metadata_free, NULL);
+ g_list_free (file->data);
+ g_free (file);
+}
+
MetaFile *
metafile_lookup_child (MetaFile *metafile,
const char *name,
@@ -351,7 +385,7 @@ metafile_collect_keywords (MetaFile *file,
}
}
-GHashTable *
+static GHashTable *
string_block_begin (void)
{
return g_hash_table_new (g_str_hash, g_str_equal);
@@ -537,7 +571,7 @@ write_metadata (GString *out,
}
}
-gboolean
+static gboolean
write_all_data_and_close (int fd, char *data, gsize len)
{
gsize written;
diff --git a/metadata/metabuilder.h b/metadata/metabuilder.h
index 18f3aba..ba6e555 100644
--- a/metadata/metabuilder.h
+++ b/metadata/metabuilder.h
@@ -29,6 +29,7 @@ struct _MetaData {
};
MetaBuilder *meta_builder_new (void);
+void meta_builder_free (MetaBuilder *builder);
void meta_builder_print (MetaBuilder *builder);
MetaFile * meta_builder_lookup (MetaBuilder *builder,
const char *path,
@@ -37,6 +38,7 @@ gboolean meta_builder_write (MetaBuilder *builder,
const char *filename);
MetaFile * metafile_new (const char *name,
MetaFile *parent);
+void metafile_free (MetaFile *file);
MetaFile * metafile_lookup_child (MetaFile *metafile,
const char *name,
gboolean create);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]