From cd8fc8e37a8489f5d15ace8e6dd2ccbb551bc877 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Sat, 7 Oct 2017 09:36:51 -0400 Subject: [PATCH] lib/core: (refactor) Drop wrapper and unneeded args for variant writing Nothing was using the `bytes_written` data (we always discard partially written tmpfiles), so simplify everything by dropping it. Further, we always passed an offset of `0`, so drop that argument too. (I believe that this was previously used by the "pack files" code that we deleted long ago) Second, we had an unnecessary internal wrapper for this function; drop that too. Closes: #1257 Approved by: jlebon --- src/libostree/ostree-core-private.h | 2 - src/libostree/ostree-core.c | 69 +++---------------- src/libostree/ostree-repo-commit.c | 2 +- .../ostree-repo-static-delta-processing.c | 3 +- 4 files changed, 13 insertions(+), 63 deletions(-) diff --git a/src/libostree/ostree-core-private.h b/src/libostree/ostree-core-private.h index 70b12b68..f964b422 100644 --- a/src/libostree/ostree-core-private.h +++ b/src/libostree/ostree-core-private.h @@ -76,8 +76,6 @@ GVariant *_ostree_zlib_file_header_new (GFileInfo *file_info, gboolean _ostree_write_variant_with_size (GOutputStream *output, GVariant *variant, - guint64 alignment_offset, - gsize *out_bytes_written, OtChecksum *checksum, GCancellable *cancellable, GError **error); diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c index 2fafe99d..6d7ab0fc 100644 --- a/src/libostree/ostree-core.c +++ b/src/libostree/ostree-core.c @@ -387,7 +387,6 @@ write_padding (GOutputStream *output, * _ostree_write_variant_with_size: * @output: Stream * @variant: A variant - * @alignment_offset: Used to determine whether or not we should write padding bytes * @out_bytes_written: (out): Number of bytes written * @checksum: (allow-none): If provided, update with written data * @cancellable: Cancellable @@ -401,73 +400,29 @@ write_padding (GOutputStream *output, gboolean _ostree_write_variant_with_size (GOutputStream *output, GVariant *variant, - guint64 alignment_offset, - gsize *out_bytes_written, OtChecksum *checksum, GCancellable *cancellable, GError **error) { - guint64 variant_size; - guint32 variant_size_u32_be; - gsize bytes_written; - gsize ret_bytes_written = 0; - /* Write variant size */ - variant_size = g_variant_get_size (variant); + const guint64 variant_size = g_variant_get_size (variant); g_assert (variant_size < G_MAXUINT32); - variant_size_u32_be = GUINT32_TO_BE((guint32) variant_size); + const guint32 variant_size_u32_be = GUINT32_TO_BE((guint32) variant_size); - bytes_written = 0; - if (!ot_gio_write_update_checksum (output, &variant_size_u32_be, 4, - &bytes_written, checksum, - cancellable, error)) + if (!ot_gio_write_update_checksum (output, &variant_size_u32_be, sizeof (variant_size_u32_be), + NULL, checksum, cancellable, error)) return FALSE; - ret_bytes_written += bytes_written; - alignment_offset += bytes_written; + const gsize alignment_offset = sizeof(variant_size_u32_be); - bytes_written = 0; /* Pad to offset of 8, write variant */ - if (!write_padding (output, 8, alignment_offset, &bytes_written, checksum, + if (!write_padding (output, 8, alignment_offset, NULL, checksum, cancellable, error)) return FALSE; - ret_bytes_written += bytes_written; - bytes_written = 0; if (!ot_gio_write_update_checksum (output, g_variant_get_data (variant), - variant_size, &bytes_written, checksum, + variant_size, NULL, checksum, cancellable, error)) return FALSE; - ret_bytes_written += bytes_written; - - if (out_bytes_written) - *out_bytes_written = ret_bytes_written; - return TRUE; -} - -/* - * write_file_header_update_checksum: - * @out: Stream - * @variant: A variant, should be a file header - * @checksum: (allow-none): If provided, update with written data - * @cancellable: Cancellable - * @error: Error - * - * Write a file header variant to the provided @out stream, optionally - * updating @checksum. - */ -static gboolean -write_file_header_update_checksum (GOutputStream *out, - GVariant *header, - OtChecksum *checksum, - GCancellable *cancellable, - GError **error) -{ - gsize bytes_written; - - if (!_ostree_write_variant_with_size (out, header, 0, &bytes_written, checksum, - cancellable, error)) - return FALSE; - return TRUE; } @@ -499,7 +454,7 @@ header_and_input_to_stream (GVariant *file_header, header_out_stream = g_memory_output_stream_new (NULL, 0, g_realloc, g_free); - if (!_ostree_write_variant_with_size (header_out_stream, file_header, 0, NULL, NULL, + if (!_ostree_write_variant_with_size (header_out_stream, file_header, NULL, cancellable, error)) return FALSE; @@ -875,12 +830,10 @@ ostree_checksum_file_from_input (GFileInfo *file_info, } else { - g_autoptr(GVariant) file_header = NULL; + g_autoptr(GVariant) file_header = _ostree_file_header_new (file_info, xattrs); - file_header = _ostree_file_header_new (file_info, xattrs); - - if (!write_file_header_update_checksum (NULL, file_header, &checksum, - cancellable, error)) + if (!_ostree_write_variant_with_size (NULL, file_header, &checksum, + cancellable, error)) return FALSE; if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_REGULAR) diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index 377adc75..a8d2aa1b 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -648,7 +648,7 @@ write_content_object (OstreeRepo *self, file_meta = _ostree_zlib_file_header_new (file_info, xattrs); - if (!_ostree_write_variant_with_size (temp_out, file_meta, 0, NULL, NULL, + if (!_ostree_write_variant_with_size (temp_out, file_meta, NULL, cancellable, error)) return FALSE; diff --git a/src/libostree/ostree-repo-static-delta-processing.c b/src/libostree/ostree-repo-static-delta-processing.c index fca0f216..092b6ea7 100644 --- a/src/libostree/ostree-repo-static-delta-processing.c +++ b/src/libostree/ostree-repo-static-delta-processing.c @@ -505,8 +505,7 @@ handle_untrusted_content_checksum (OstreeRepo *repo, ot_checksum_init (&state->content_checksum); - gsize bytes_written; - if (!_ostree_write_variant_with_size (NULL, header, 0, &bytes_written, &state->content_checksum, + if (!_ostree_write_variant_with_size (NULL, header, &state->content_checksum, cancellable, error)) return FALSE;