summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-repo-prune.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2017-05-16 10:51:40 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2017-05-16 18:39:19 +0000
commit9380dbb14d29de77a9fdd0b7bd7ff63bb0e0d441 (patch)
tree2e61a7ab93469c4bfb8c06be673d295a588386bd /src/libostree/ostree-repo-prune.c
parent90cd7f72344fc84da9d1f73189bdeebdcc4596aa (diff)
downloadostree-9380dbb14d29de77a9fdd0b7bd7ff63bb0e0d441.tar.gz
lib: Add "open dfd iter handling noent" helper, port tree-wide
Follow up to a previous patch that addressed a double-close; I realized we already had a helper for doing "open dfd iter, do nothing if we get ENOENT". Raise it to libotuil, and port all consumers. Closes: #863 Approved by: jlebon
Diffstat (limited to 'src/libostree/ostree-repo-prune.c')
-rw-r--r--src/libostree/ostree-repo-prune.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/src/libostree/ostree-repo-prune.c b/src/libostree/ostree-repo-prune.c
index 76d64794..bf0a2530 100644
--- a/src/libostree/ostree-repo-prune.c
+++ b/src/libostree/ostree-repo-prune.c
@@ -114,19 +114,14 @@ _ostree_repo_prune_tmp (OstreeRepo *self,
if (self->cache_dir_fd == -1)
return TRUE;
- 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)
- return TRUE;
- else
- 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))
+ gboolean exists;
+ if (!ot_dfd_iter_init_allow_noent (self->cache_dir_fd, _OSTREE_SUMMARY_CACHE_DIR,
+ &dfd_iter, &exists, error))
return FALSE;
+ /* Note early return */
+ if (!exists)
+ return TRUE;
while (TRUE)
{
@@ -152,7 +147,7 @@ _ostree_repo_prune_tmp (OstreeRepo *self,
if (has_sig_suffix)
dent->d_name[len - 4] = '.';
- if (unlinkat (fd, dent->d_name, 0) < 0)
+ if (unlinkat (dfd_iter.fd, dent->d_name, 0) < 0)
return glnx_throw_errno_prefix (error, "unlinkat");
}
}