summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-repo-prune.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2017-05-10 11:08:12 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2017-05-11 13:20:38 +0000
commit986e05e3fd59abc6f837cc9a6282e75b9596ad76 (patch)
treeaf1451d7d07b1766dbaffe7c8ead7a644cb90dfd /src/libostree/ostree-repo-prune.c
parent63497c65f33c9e564f7c83b98b39a4fe7f588524 (diff)
downloadostree-986e05e3fd59abc6f837cc9a6282e75b9596ad76.tar.gz
lib/prune: Complete porting to new code style
Only non-mechanical bit here was creating a local autoptr for a bit where we'd previously done an unref for a struct member. Closes: #847 Approved by: jlebon
Diffstat (limited to 'src/libostree/ostree-repo-prune.c')
-rw-r--r--src/libostree/ostree-repo-prune.c90
1 files changed, 30 insertions, 60 deletions
diff --git a/src/libostree/ostree-repo-prune.c b/src/libostree/ostree-repo-prune.c
index 1b2a8257..76d64794 100644
--- a/src/libostree/ostree-repo-prune.c
+++ b/src/libostree/ostree-repo-prune.c
@@ -42,21 +42,14 @@ prune_commitpartial_file (OstreeRepo *repo,
GCancellable *cancellable,
GError **error)
{
- gboolean ret = FALSE;
g_autofree char *path = _ostree_get_commitpartial_path (checksum);
-
if (unlinkat (repo->repo_dir_fd, path, 0) != 0)
{
if (errno != ENOENT)
- {
- glnx_set_error_from_errno (error);
- goto out;
- }
+ return glnx_throw_errno_prefix (error, "unlinkat");
}
- ret = TRUE;
- out:
- return ret;
+ return TRUE;
}
static gboolean
@@ -67,7 +60,6 @@ maybe_prune_loose_object (OtPruneData *data,
GCancellable *cancellable,
GError **error)
{
- gboolean ret = FALSE;
g_autoptr(GVariant) key = NULL;
key = ostree_object_name_serialize (checksum, objtype);
@@ -83,16 +75,16 @@ maybe_prune_loose_object (OtPruneData *data,
if (objtype == OSTREE_OBJECT_TYPE_COMMIT)
{
if (!prune_commitpartial_file (data->repo, checksum, cancellable, error))
- goto out;
+ return FALSE;
}
if (!ostree_repo_query_object_storage_size (data->repo, objtype, checksum,
&storage_size, cancellable, error))
- goto out;
+ return FALSE;
if (!ostree_repo_delete_object (data->repo, objtype, checksum,
cancellable, error))
- goto out;
+ return FALSE;
data->freed_bytes += storage_size;
}
@@ -111,9 +103,7 @@ maybe_prune_loose_object (OtPruneData *data,
data->n_reachable_content++;
}
- ret = TRUE;
- out:
- return ret;
+ return TRUE;
}
static gboolean
@@ -121,25 +111,22 @@ _ostree_repo_prune_tmp (OstreeRepo *self,
GCancellable *cancellable,
GError **error)
{
- gboolean ret = FALSE;
- g_auto(GLnxDirFdIterator) dfd_iter = { 0, };
- glnx_fd_close int fd = -1;
-
if (self->cache_dir_fd == -1)
return TRUE;
- fd = glnx_opendirat_with_errno (self->cache_dir_fd, _OSTREE_SUMMARY_CACHE_DIR, FALSE);
+ glnx_fd_close int fd = glnx_opendirat_with_errno (self->cache_dir_fd, _OSTREE_SUMMARY_CACHE_DIR, FALSE);
if (fd < 0)
{
+ /* Note early return */
if (errno == ENOENT)
- ret = TRUE;
+ return TRUE;
else
- glnx_set_error_from_errno (error);
- goto out;
+ return glnx_throw_errno_prefix (error, "opendirat(%s)", _OSTREE_SUMMARY_CACHE_DIR);
}
+ g_auto(GLnxDirFdIterator) dfd_iter = { 0, };
if (!glnx_dirfd_iterator_init_take_fd (dup (fd), &dfd_iter, error))
- goto out;
+ return FALSE;
while (TRUE)
{
@@ -148,8 +135,7 @@ _ostree_repo_prune_tmp (OstreeRepo *self,
struct dirent *dent;
if (!glnx_dirfd_iterator_next_dent (&dfd_iter, &dent, cancellable, error))
- goto out;
-
+ return FALSE;
if (dent == NULL)
break;
@@ -167,17 +153,11 @@ _ostree_repo_prune_tmp (OstreeRepo *self,
dent->d_name[len - 4] = '.';
if (unlinkat (fd, dent->d_name, 0) < 0)
- {
- glnx_set_error_from_errno (error);
- goto out;
- }
+ return glnx_throw_errno_prefix (error, "unlinkat");
}
}
- ret = TRUE;
-
- out:
- return ret;
+ return TRUE;
}
@@ -198,22 +178,17 @@ ostree_repo_prune_static_deltas (OstreeRepo *self, const char *commit,
GCancellable *cancellable,
GError **error)
{
- gboolean ret = FALSE;
g_autoptr(GPtrArray) deltas = NULL;
- guint i;
-
if (!ostree_repo_list_static_delta_names (self, &deltas,
cancellable, error))
- goto out;
+ return FALSE;
- for (i = 0; i < deltas->len; i++)
+ for (guint i = 0; i < deltas->len; i++)
{
const char *deltaname = deltas->pdata[i];
const char *dash = strchr (deltaname, '-');
const char *to = NULL;
- gboolean have_commit;
g_autofree char *from = NULL;
- g_autofree char *deltadir = NULL;
if (!dash)
{
@@ -232,26 +207,24 @@ ostree_repo_prune_static_deltas (OstreeRepo *self, const char *commit,
}
else
{
+ gboolean have_commit;
if (!ostree_repo_has_object (self, OSTREE_OBJECT_TYPE_COMMIT,
to, &have_commit,
cancellable, error))
- goto out;
+ return FALSE;
if (have_commit)
continue;
}
g_debug ("Trying to prune static delta %s", deltaname);
- deltadir = _ostree_get_relative_static_delta_path (from, to, NULL);
-
+ g_autofree char *deltadir = _ostree_get_relative_static_delta_path (from, to, NULL);
if (!glnx_shutil_rm_rf_at (self->repo_dir_fd, deltadir,
- cancellable, error))
- goto out;
+ cancellable, error))
+ return FALSE;
}
- ret = TRUE;
- out:
- return ret;
+ return TRUE;
}
static gboolean
@@ -264,13 +237,14 @@ repo_prune_internal (OstreeRepo *self,
GCancellable *cancellable,
GError **error)
{
- gboolean ret = FALSE;
GHashTableIter hash_iter;
gpointer key, value;
OtPruneData data = { 0, };
data.repo = self;
- data.reachable = g_hash_table_ref (options->reachable);
+ /* We unref this when we're done */
+ g_autoptr(GHashTable) reachable_owned = g_hash_table_ref (options->reachable);
+ data.reachable = reachable_owned;
g_hash_table_iter_init (&hash_iter, objects);
while (g_hash_table_iter_next (&hash_iter, &key, &value))
@@ -289,24 +263,20 @@ repo_prune_internal (OstreeRepo *self,
if (!maybe_prune_loose_object (&data, options->flags, checksum, objtype,
cancellable, error))
- goto out;
+ return FALSE;
}
if (!ostree_repo_prune_static_deltas (self, NULL, cancellable, error))
- goto out;
+ return FALSE;
if (!_ostree_repo_prune_tmp (self, cancellable, error))
- goto out;
+ return FALSE;
- ret = TRUE;
*out_objects_total = (data.n_reachable_meta + data.n_unreachable_meta +
data.n_reachable_content + data.n_unreachable_content);
*out_objects_pruned = (data.n_unreachable_meta + data.n_unreachable_content);
*out_pruned_object_size_total = data.freed_bytes;
- out:
- if (data.reachable)
- g_hash_table_unref (data.reachable);
- return ret;
+ return TRUE;
}
/**