[ostree] bootconfig: Add ostree_bootconfig_parser_write_at



commit 3a4f90cf8e30284f336918ffb0c3bd56f4cb3fde
Author: Colin Walters <walters verbum org>
Date:   Mon Apr 20 22:23:39 2015 -0400

    bootconfig: Add ostree_bootconfig_parser_write_at
    
    This fd-relative API will be used by later libostree porting in the
    deploy code path.

 src/libostree/ostree-bootconfig-parser.c |   34 +++++++++++++++++++----------
 src/libostree/ostree-bootconfig-parser.h |    6 +++++
 2 files changed, 28 insertions(+), 12 deletions(-)
---
diff --git a/src/libostree/ostree-bootconfig-parser.c b/src/libostree/ostree-bootconfig-parser.c
index 6320b5b..661e759 100644
--- a/src/libostree/ostree-bootconfig-parser.c
+++ b/src/libostree/ostree-bootconfig-parser.c
@@ -158,18 +158,18 @@ write_key (OstreeBootconfigParser    *self,
   g_string_append (buf, value);
   g_string_append_c (buf, '\n');
 }
-           
+
 gboolean
-ostree_bootconfig_parser_write (OstreeBootconfigParser   *self,
-                                GFile            *output,
-                                GCancellable     *cancellable,
-                                GError          **error)
+ostree_bootconfig_parser_write_at (OstreeBootconfigParser   *self,
+                                   int                       dfd,
+                                   const char               *path,
+                                   GCancellable             *cancellable,
+                                   GError                  **error)
 {
   gboolean ret = FALSE;
   GHashTableIter hashiter;
   gpointer hashkey, hashvalue;
   GString *buf = g_string_new ("");
-  g_autoptr(GBytes) bytes = NULL;
   guint i;
   g_autoptr(GHashTable) written_overrides = NULL;
 
@@ -205,18 +205,28 @@ ostree_bootconfig_parser_write (OstreeBootconfigParser   *self,
       write_key (self, buf, hashkey, hashvalue);
     }
 
-  bytes = g_string_free_to_bytes (buf);
-  buf = NULL;
-
-  if (!ot_gfile_replace_contents_fsync (output, bytes,
-                                        cancellable, error))
+  if (!glnx_file_replace_contents_at (dfd, path, (guint8*)buf->str, buf->len,
+                                      GLNX_FILE_REPLACE_NODATASYNC,
+                                      cancellable, error))
     goto out;
 
   ret = TRUE;
  out:
-  if (buf) g_string_free (buf, TRUE);
+  if (buf)
+    g_string_free (buf, TRUE);
   return ret;
 }
+           
+gboolean
+ostree_bootconfig_parser_write (OstreeBootconfigParser   *self,
+                                GFile            *output,
+                                GCancellable     *cancellable,
+                                GError          **error)
+{
+  return ostree_bootconfig_parser_write_at (self,
+                                            AT_FDCWD, gs_file_get_path_cached (output),
+                                            cancellable, error);
+}
 
 static void
 ostree_bootconfig_parser_finalize (GObject *object)
diff --git a/src/libostree/ostree-bootconfig-parser.h b/src/libostree/ostree-bootconfig-parser.h
index 7ff2235..47dac9c 100644
--- a/src/libostree/ostree-bootconfig-parser.h
+++ b/src/libostree/ostree-bootconfig-parser.h
@@ -52,6 +52,12 @@ gboolean ostree_bootconfig_parser_write (OstreeBootconfigParser   *self,
                                          GCancellable     *cancellable,
                                          GError          **error);
 
+gboolean ostree_bootconfig_parser_write_at (OstreeBootconfigParser   *self,
+                                            int                       dfd,
+                                            const char               *path,
+                                            GCancellable             *cancellable,
+                                            GError                  **error);
+
 void ostree_bootconfig_parser_set (OstreeBootconfigParser  *self,
                                    const char      *key,
                                    const char      *value);


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