summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2017-10-16 15:04:48 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2017-10-17 16:24:13 +0000
commitbc7ff2cd1dea92594801c89c3727ac23ca12f872 (patch)
tree44313b116519675b579cbbaee52c02c6ff586746
parent93457071cb5d47c08b60d3244f9632725634010a (diff)
downloadostree-bc7ff2cd1dea92594801c89c3727ac23ca12f872.tar.gz
lib/commit: Avoid trying to delete `.` with _CONSUME flag
This helps port rpm-ostree. Closes: #1278 Approved by: jlebon
-rw-r--r--src/libostree/ostree-repo-commit.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c
index 140ea34f..f0cc8bf4 100644
--- a/src/libostree/ostree-repo-commit.c
+++ b/src/libostree/ostree-repo-commit.c
@@ -3193,11 +3193,13 @@ ostree_repo_write_dfd_to_mtree (OstreeRepo *self,
return FALSE;
/* And now finally remove the toplevel; see also the handling for this flag in
- * the write_dfd_iter_to_mtree_internal() function.
+ * the write_dfd_iter_to_mtree_internal() function. As a special case we don't
+ * try to remove `.` (since we'd get EINVAL); that's what's used in
+ * rpm-ostree.
*/
const gboolean delete_after_commit = modifier &&
(modifier->flags & OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME);
- if (delete_after_commit)
+ if (delete_after_commit && !g_str_equal (path, "."))
{
if (!glnx_unlinkat (dfd, path, AT_REMOVEDIR, error))
return FALSE;