summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicholson <nicholson@endlessm.com>2019-12-19 12:50:46 -0700
committerDan Nicholson <nicholson@endlessm.com>2020-01-20 20:44:12 -0700
commitfcbb453443c4f22e8621c8593877ab775e5a5884 (patch)
tree988fe43c384d1710115ca4c3d26461a1e1f9a95c
parent1bbe674d91a23e733e1bb58fc6c28c4ab86f94ae (diff)
downloadostree-fcbb453443c4f22e8621c8593877ab775e5a5884.tar.gz
core: Add OstreeCommitSizesEntry type
This will be used when reading out entries in the `ostree.sizes` metadata. Each entry corresponds to an object in the metadata array.
-rw-r--r--apidoc/ostree-sections.txt6
-rw-r--r--src/libostree/libostree-devel.sym5
-rw-r--r--src/libostree/ostree-autocleanups.h1
-rw-r--r--src/libostree/ostree-core.c70
-rw-r--r--src/libostree/ostree-core.h32
5 files changed, 114 insertions, 0 deletions
diff --git a/apidoc/ostree-sections.txt b/apidoc/ostree-sections.txt
index 1ef4bbf6..33035ca7 100644
--- a/apidoc/ostree-sections.txt
+++ b/apidoc/ostree-sections.txt
@@ -151,7 +151,13 @@ ostree_validate_structureof_dirmeta
ostree_commit_get_parent
ostree_commit_get_timestamp
ostree_commit_get_content_checksum
+OstreeCommitSizesEntry
+ostree_commit_sizes_entry_new
+ostree_commit_sizes_entry_copy
+ostree_commit_sizes_entry_free
ostree_check_version
+<SUBSECTION Standard>
+ostree_commit_sizes_entry_get_type
</SECTION>
<SECTION>
diff --git a/src/libostree/libostree-devel.sym b/src/libostree/libostree-devel.sym
index d1666176..8e7473c5 100644
--- a/src/libostree/libostree-devel.sym
+++ b/src/libostree/libostree-devel.sym
@@ -19,6 +19,11 @@
/* Add new symbols here. Release commits should copy this section into -released.sym. */
LIBOSTREE_2019.7 {
+global:
+ ostree_commit_sizes_entry_copy;
+ ostree_commit_sizes_entry_free;
+ ostree_commit_sizes_entry_get_type;
+ ostree_commit_sizes_entry_new;
ostree_sysroot_initialize;
ostree_sysroot_is_booted;
ostree_sysroot_set_mount_namespace_in_use;
diff --git a/src/libostree/ostree-autocleanups.h b/src/libostree/ostree-autocleanups.h
index c07f88a8..c9692ebe 100644
--- a/src/libostree/ostree-autocleanups.h
+++ b/src/libostree/ostree-autocleanups.h
@@ -49,6 +49,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeRepoDevInoCache, ostree_repo_devino_cache_u
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeAsyncProgress, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeBootconfigParser, g_object_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeCommitSizesEntry, ostree_commit_sizes_entry_free)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeDeployment, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeGpgVerifyResult, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeKernelArgs, ostree_kernel_args_free)
diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c
index 3d16757e..160f954f 100644
--- a/src/libostree/ostree-core.c
+++ b/src/libostree/ostree-core.c
@@ -2430,6 +2430,76 @@ ostree_commit_get_content_checksum (GVariant *commit_variant)
return g_strdup (hexdigest);
}
+G_DEFINE_BOXED_TYPE (OstreeCommitSizesEntry, ostree_commit_sizes_entry,
+ ostree_commit_sizes_entry_copy, ostree_commit_sizes_entry_free)
+
+/**
+ * ostree_commit_sizes_entry_new:
+ * @checksum: (not nullable): object checksum
+ * @objtype: object type
+ * @unpacked: unpacked object size
+ * @archived: compressed object size
+ *
+ * Create a new #OstreeCommitSizesEntry for representing an object in a
+ * commit's "ostree.sizes" metadata.
+ *
+ * Returns: (transfer full) (nullable): a new #OstreeCommitSizesEntry
+ * Since: 2019.7
+ */
+OstreeCommitSizesEntry *
+ostree_commit_sizes_entry_new (const gchar *checksum,
+ OstreeObjectType objtype,
+ guint64 unpacked,
+ guint64 archived)
+{
+ g_return_val_if_fail (checksum == NULL || ostree_validate_checksum_string (checksum, NULL), NULL);
+
+ g_autoptr(OstreeCommitSizesEntry) entry = g_new0 (OstreeCommitSizesEntry, 1);
+ entry->checksum = g_strdup (checksum);
+ entry->objtype = objtype;
+ entry->unpacked = unpacked;
+ entry->archived = archived;
+
+ return g_steal_pointer (&entry);
+}
+
+/**
+ * ostree_commit_sizes_entry_copy:
+ * @entry: (not nullable): an #OstreeCommitSizesEntry
+ *
+ * Create a copy of the given @entry.
+ *
+ * Returns: (transfer full) (nullable): a new copy of @entry
+ * Since: 2019.7
+ */
+OstreeCommitSizesEntry *
+ostree_commit_sizes_entry_copy (const OstreeCommitSizesEntry *entry)
+{
+ g_return_val_if_fail (entry != NULL, NULL);
+
+ return ostree_commit_sizes_entry_new (entry->checksum,
+ entry->objtype,
+ entry->unpacked,
+ entry->archived);
+}
+
+/**
+ * ostree_commit_sizes_entry_free:
+ * @entry: (transfer full): an #OstreeCommitSizesEntry
+ *
+ * Free given @entry.
+ *
+ * Since: 2019.7
+ */
+void
+ostree_commit_sizes_entry_free (OstreeCommitSizesEntry *entry)
+{
+ g_return_if_fail (entry != NULL);
+
+ g_free (entry->checksum);
+ g_free (entry);
+}
+
/* Used in pull/deploy to validate we're not being downgraded */
gboolean
_ostree_compare_timestamps (const char *current_rev,
diff --git a/src/libostree/ostree-core.h b/src/libostree/ostree-core.h
index 69477a75..a61ae06c 100644
--- a/src/libostree/ostree-core.h
+++ b/src/libostree/ostree-core.h
@@ -521,6 +521,38 @@ guint64 ostree_commit_get_timestamp (GVariant *commit_variant);
_OSTREE_PUBLIC
gchar * ostree_commit_get_content_checksum (GVariant *commit_variant);
+/**
+ * OstreeCommitSizesEntry:
+ * @checksum: (not nullable): object checksum
+ * @objtype: object type
+ * @unpacked: unpacked object size
+ * @archived: compressed object size
+ *
+ * Structure representing an entry in the "ostree.sizes" commit metadata. Each
+ * entry corresponds to an object in the associated commit.
+ *
+ * Since: 2019.5
+ */
+typedef struct {
+ gchar *checksum;
+ OstreeObjectType objtype;
+ guint64 unpacked;
+ guint64 archived;
+} OstreeCommitSizesEntry;
+
+_OSTREE_PUBLIC
+GType ostree_commit_sizes_entry_get_type (void);
+
+_OSTREE_PUBLIC
+OstreeCommitSizesEntry *ostree_commit_sizes_entry_new (const gchar *checksum,
+ OstreeObjectType objtype,
+ guint64 unpacked,
+ guint64 archived);
+_OSTREE_PUBLIC
+OstreeCommitSizesEntry *ostree_commit_sizes_entry_copy (const OstreeCommitSizesEntry *entry);
+_OSTREE_PUBLIC
+void ostree_commit_sizes_entry_free (OstreeCommitSizesEntry *entry);
+
_OSTREE_PUBLIC
gboolean ostree_check_version (guint required_year, guint required_release);