From 3a4f90cf8e30284f336918ffb0c3bd56f4cb3fde Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 20 Apr 2015 22:23:39 -0400 Subject: [PATCH] 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 6320b5bb..661e759d 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 7ff22350..47dac9c9 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);