[ostree/wip/anaconda: 2/6] libostree: Add ostree_bootconfig_parser_clone()



commit 606918e76339b6c62a06b04c6e8647345a24c692
Author: Colin Walters <walters verbum org>
Date:   Mon Mar 17 19:21:05 2014 -0400

    libostree: Add ostree_bootconfig_parser_clone()
    
    This will be necessary to fix ostree_deployment_clone(), but is
    potentially useful on its own for other consumers.

 src/libostree/ostree-bootconfig-parser.c |   24 ++++++++++++++++++++++++
 src/libostree/ostree-bootconfig-parser.h |    2 ++
 2 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/src/libostree/ostree-bootconfig-parser.c b/src/libostree/ostree-bootconfig-parser.c
index e660685..f002a18 100644
--- a/src/libostree/ostree-bootconfig-parser.c
+++ b/src/libostree/ostree-bootconfig-parser.c
@@ -38,6 +38,30 @@ typedef GObjectClass OstreeBootconfigParserClass;
 
 G_DEFINE_TYPE (OstreeBootconfigParser, ostree_bootconfig_parser, G_TYPE_OBJECT)
 
+/**
+ * ostree_bootconfig_parser_clone:
+ * @self: Bootconfig to clone
+ * 
+ * Returns: (transfer full): Copy of @self
+ */
+OstreeBootconfigParser *
+ostree_bootconfig_parser_clone (OstreeBootconfigParser *self)
+{
+  OstreeBootconfigParser *parser = ostree_bootconfig_parser_new ();
+  guint i;
+  GHashTableIter hashiter;
+  gpointer k, v;
+
+  for (i = 0; i < self->lines->len; i++)
+    g_ptr_array_add (parser->lines, g_variant_ref (self->lines->pdata[i]));
+
+  g_hash_table_iter_init (&hashiter, self->options);
+  while (g_hash_table_iter_next (&hashiter, &k, &v))
+    g_hash_table_replace (parser->options, g_strdup (k), g_strdup (v));
+
+  return parser;
+}
+
 gboolean
 ostree_bootconfig_parser_parse (OstreeBootconfigParser  *self,
                                 GFile           *path,
diff --git a/src/libostree/ostree-bootconfig-parser.h b/src/libostree/ostree-bootconfig-parser.h
index 0761016..629d171 100644
--- a/src/libostree/ostree-bootconfig-parser.h
+++ b/src/libostree/ostree-bootconfig-parser.h
@@ -34,6 +34,8 @@ GType ostree_bootconfig_parser_get_type (void) G_GNUC_CONST;
 
 OstreeBootconfigParser * ostree_bootconfig_parser_new (void);
 
+OstreeBootconfigParser * ostree_bootconfig_parser_clone (OstreeBootconfigParser *self);
+
 gboolean ostree_bootconfig_parser_parse (OstreeBootconfigParser  *self,
                                          GFile           *path,
                                          GCancellable    *cancellable,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]