summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2023-03-17 11:28:18 -0400
committerGitHub <noreply@github.com>2023-03-17 11:28:18 -0400
commit233cc8ce85e46a9a28ce302dd8d003f141531d69 (patch)
treeb18d2eccda3534696ed82750dcea56b80a9031cb
parent7b258b2499d211b672ce3b64a0f9312208f73c0b (diff)
parent1b29ab7d90d9d93eedd7cd3e49c500e1ca3e3f47 (diff)
downloadostree-233cc8ce85e46a9a28ce302dd8d003f141531d69.tar.gz
Merge pull request #2836 from smcv/file-info-size
Cope with GLib 2.76 being more strict about GFileInfo standard::size
-rw-r--r--src/libostree/ostree-core.c9
-rw-r--r--src/libostree/ostree-repo-commit.c3
2 files changed, 9 insertions, 3 deletions
diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c
index ee0552f6..adb9d70c 100644
--- a/src/libostree/ostree-core.c
+++ b/src/libostree/ostree-core.c
@@ -355,7 +355,7 @@ GBytes *
_ostree_zlib_file_header_new (GFileInfo *file_info,
GVariant *xattrs)
{
- guint64 size = g_file_info_get_size (file_info);
+ guint64 size = 0;
guint32 uid = g_file_info_get_attribute_uint32 (file_info, "unix::uid");
guint32 gid = g_file_info_get_attribute_uint32 (file_info, "unix::gid");
guint32 mode = g_file_info_get_attribute_uint32 (file_info, "unix::mode");
@@ -366,6 +366,9 @@ _ostree_zlib_file_header_new (GFileInfo *file_info,
else
symlink_target = "";
+ if (g_file_info_has_attribute (file_info, "standard::size"))
+ size = g_file_info_get_size (file_info);
+
g_autoptr(GVariant) tmp_xattrs = NULL;
if (xattrs == NULL)
tmp_xattrs = g_variant_ref_sink (g_variant_new_array (G_VARIANT_TYPE ("(ayay)"), NULL, 0));
@@ -550,7 +553,9 @@ ostree_raw_file_to_content_stream (GInputStream *input,
g_autoptr(GBytes) file_header = _ostree_file_header_new (file_info, xattrs);
*out_input = header_and_input_to_stream (file_header, input);
if (out_length)
- *out_length = g_bytes_get_size (file_header) + g_file_info_get_size (file_info);
+ *out_length = g_bytes_get_size (file_header);
+ if (out_length && g_file_info_has_attribute (file_info, "standard::size"))
+ *out_length += g_file_info_get_size (file_info);
return TRUE;
}
diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c
index 2d4347b0..32119c47 100644
--- a/src/libostree/ostree-repo-commit.c
+++ b/src/libostree/ostree-repo-commit.c
@@ -1211,7 +1211,8 @@ write_content_object (OstreeRepo *self,
/* Update statistics */
g_mutex_lock (&self->txn_lock);
self->txn.stats.content_objects_written++;
- self->txn.stats.content_bytes_written += g_file_info_get_size (file_info);
+ if (g_file_info_has_attribute (file_info, "standard::size"))
+ self->txn.stats.content_bytes_written += g_file_info_get_size (file_info);
self->txn.stats.content_objects_total++;
g_mutex_unlock (&self->txn_lock);