lib/commit: (refactor) Clean up delta bare write API
The way `_ostree_repo_open_content_bare()` did both looking for the object and possibly creating a new fd was just weird and inconsistent with e.g. the pull code where we always call `has_object()` first. Just call `has_object()` in the delta paths that used this too, making the implementation right now a thin wrapper around `glnx_open_tmpfile_linkable_at()`, but this is prep for a later patch which does more. Closes: #1283 Approved by: jlebon
This commit is contained in:
1 parent
40a0b9fb73
commit
a2f8315eae
3 files changed
+22
-28
No files matched your search
@@ -583,15 +583,18 @@ dispatch_open_splice_and_close (OstreeRepo *repo,
|
||||
if (S_ISREG (state->mode) &&
|
||||
_ostree_repo_mode_is_bare (repo->mode))
|
||||
{
|
||||
if (!_ostree_repo_open_content_bare (repo, state->checksum,
|
||||
state->content_size,
|
||||
&state->tmpf,
|
||||
&state->have_obj,
|
||||
cancellable, error))
|
||||
if (!ostree_repo_has_object (repo, OSTREE_OBJECT_TYPE_FILE, state->checksum,
|
||||
&state->have_obj, cancellable, error))
|
||||
goto out;
|
||||
|
||||
if (!state->have_obj)
|
||||
{
|
||||
if (!_ostree_repo_open_content_bare (repo, state->checksum,
|
||||
state->content_size,
|
||||
&state->tmpf,
|
||||
cancellable, error))
|
||||
goto out;
|
||||
|
||||
state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE);
|
||||
if (!handle_untrusted_content_checksum (repo, state, cancellable, error))
|
||||
goto out;
|
||||
@@ -682,14 +685,19 @@ dispatch_open (OstreeRepo *repo,
|
||||
if (state->stats_only)
|
||||
return TRUE; /* Early return */
|
||||
|
||||
if (!_ostree_repo_open_content_bare (repo, state->checksum,
|
||||
state->content_size,
|
||||
&state->tmpf,
|
||||
&state->have_obj,
|
||||
cancellable, error))
|
||||
if (!ostree_repo_has_object (repo, OSTREE_OBJECT_TYPE_FILE, state->checksum,
|
||||
&state->have_obj, cancellable, error))
|
||||
return FALSE;
|
||||
|
||||
if (!state->have_obj)
|
||||
state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE);
|
||||
{
|
||||
if (!_ostree_repo_open_content_bare (repo, state->checksum,
|
||||
state->content_size,
|
||||
&state->tmpf,
|
||||
cancellable, error))
|
||||
return FALSE;
|
||||
state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE);
|
||||
}
|
||||
|
||||
if (!handle_untrusted_content_checksum (repo, state, cancellable, error))
|
||||
return FALSE;
|
||||
|
||||
Reference in new issue
Block a user