From 40b41d2cc9cd541891f04f959beff59f19129d87 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 31 Jul 2017 13:28:16 -0400 Subject: [PATCH] tree-wide: Use GLib autocleanups for libarchive Define typedefs for read/write archives, and use the GLib autocleanups for them. Prep for updating libglnx to drop its custom autocleanup macros. Closes: #1042 Approved by: jlebon --- src/libostree/ostree-libarchive-private.h | 14 ++++++-------- src/libostree/ostree-repo-libarchive.c | 2 +- src/ostree/ot-builtin-export.c | 2 +- tests/test-libarchive-import.c | 18 +++++++++--------- 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/libostree/ostree-libarchive-private.h b/src/libostree/ostree-libarchive-private.h index 865a4b8d..dcf86ea3 100644 --- a/src/libostree/ostree-libarchive-private.h +++ b/src/libostree/ostree-libarchive-private.h @@ -22,6 +22,8 @@ #pragma once +#include "config.h" + #include #include "libglnx.h" #ifdef HAVE_LIBARCHIVE @@ -32,14 +34,10 @@ G_BEGIN_DECLS #ifdef HAVE_LIBARCHIVE -GLNX_DEFINE_CLEANUP_FUNCTION (void *, flatpak_local_free_write_archive, archive_write_free) -#define ot_cleanup_write_archive __attribute__((cleanup (flatpak_local_free_write_archive))) - -GLNX_DEFINE_CLEANUP_FUNCTION (void *, flatpak_local_free_read_archive, archive_read_free) -#define ot_cleanup_read_archive __attribute__((cleanup (flatpak_local_free_read_archive))) -#else -#define ot_cleanup_write_archive -#define ot_cleanup_read_archive +typedef struct archive OtAutoArchiveWrite; +G_DEFINE_AUTOPTR_CLEANUP_FUNC(OtAutoArchiveWrite, archive_write_free) +typedef struct archive OtAutoArchiveRead; +G_DEFINE_AUTOPTR_CLEANUP_FUNC(OtAutoArchiveRead, archive_read_free) #endif G_END_DECLS diff --git a/src/libostree/ostree-repo-libarchive.c b/src/libostree/ostree-repo-libarchive.c index 2e1696b5..02e12d50 100644 --- a/src/libostree/ostree-repo-libarchive.c +++ b/src/libostree/ostree-repo-libarchive.c @@ -900,7 +900,7 @@ ostree_repo_write_archive_to_mtree (OstreeRepo *self, { #ifdef HAVE_LIBARCHIVE gboolean ret = FALSE; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0, }; #ifdef HAVE_ARCHIVE_READ_SUPPORT_FILTER_ALL diff --git a/src/ostree/ot-builtin-export.c b/src/ostree/ot-builtin-export.c index 2d40112a..fea03c3e 100644 --- a/src/ostree/ot-builtin-export.c +++ b/src/ostree/ot-builtin-export.c @@ -68,7 +68,7 @@ ostree_builtin_export (int argc, char **argv, GCancellable *cancellable, GError g_autoptr(GFile) subtree = NULL; g_autofree char *commit = NULL; g_autoptr(GVariant) commit_data = NULL; - ot_cleanup_write_archive struct archive *a = NULL; + g_autoptr(OtAutoArchiveWrite) a = NULL; OstreeRepoExportArchiveOptions opts = { 0, }; context = g_option_context_new ("COMMIT - Stream COMMIT to stdout in tar format"); diff --git a/tests/test-libarchive-import.c b/tests/test-libarchive-import.c index e9be7f66..8f884a66 100644 --- a/tests/test-libarchive-import.c +++ b/tests/test-libarchive-import.c @@ -41,7 +41,7 @@ static void test_data_init (TestData *td) { GError *error = NULL; - ot_cleanup_write_archive struct archive *a = archive_write_new (); + g_autoptr(OtAutoArchiveWrite) a = archive_write_new (); struct archive_entry *ae; uid_t uid = getuid (); gid_t gid = getgid (); @@ -165,7 +165,7 @@ test_libarchive_noautocreate_empty (gconstpointer data) { TestData *td = (void*)data; GError *error = NULL; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0, }; glnx_unref_object OstreeMutableTree *mtree = ostree_mutable_tree_new (); @@ -181,7 +181,7 @@ test_libarchive_autocreate_empty (gconstpointer data) { TestData *td = (void*)data; g_autoptr(GError) error = NULL; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0, }; glnx_unref_object OstreeMutableTree *mtree = ostree_mutable_tree_new (); @@ -199,7 +199,7 @@ test_libarchive_error_device_file (gconstpointer data) { TestData *td = (void*)data; g_autoptr(GError) error = NULL; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0, }; glnx_unref_object OstreeMutableTree *mtree = ostree_mutable_tree_new (); @@ -270,7 +270,7 @@ test_libarchive_ignore_device_file (gconstpointer data) { TestData *td = (void*)data; g_autoptr(GError) error = NULL; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0, }; if (skip_if_no_xattr (td)) @@ -332,7 +332,7 @@ test_libarchive_ostree_convention (gconstpointer data) { TestData *td = (void*)data; GError *error = NULL; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0, }; if (skip_if_no_xattr (td)) @@ -374,7 +374,7 @@ test_libarchive_xattr_callback (gconstpointer data) { TestData *td = (void*)data; GError *error = NULL; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0 }; OstreeRepoCommitModifier *modifier = NULL; char buf[7] = { 0 }; @@ -429,7 +429,7 @@ static void entry_pathname_test_helper (gconstpointer data, gboolean on) { TestData *td = (void*)data; GError *error = NULL; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0, }; OstreeRepoCommitModifier *modifier = NULL; gboolean met_etc_file = FALSE; @@ -491,7 +491,7 @@ test_libarchive_selinux (gconstpointer data) { TestData *td = (void*)data; GError *error = NULL; - ot_cleanup_read_archive struct archive *a = archive_read_new (); + g_autoptr(OtAutoArchiveRead) a = archive_read_new (); OstreeRepoImportArchiveOptions opts = { 0 }; glnx_unref_object OstreeSePolicy *sepol = NULL; OstreeRepoCommitModifier *modifier = NULL;