repo: Simplify internal has_object() lookup code

There was some leftover intermediate cruft here I noticed
while reviewing another patch:

 - We had an output `GFile*` for that was never used
 - We required the caller to allocate the loose pathbuf, but
   none of them ever reused it
 - We had an extra intermediate function

Also while looking at this, I'm now uncertain whether some of the
callers of `_ostree_repo_has_loose_object` should really be invoking
`ostree_repo_has_object()`, but let's leave that aside for now.

Closes: #272
Approved by: alexlarsson
This commit is contained in:
Colin Walters 2016-04-21 15:14:51 -04:00 committed by Colin Walters (automation)
parent 8f8ab56211
commit 8609cb036b
3 changed files with 9 additions and 44 deletions

View File

@ -573,11 +573,8 @@ _ostree_repo_open_trusted_content_bare (OstreeRepo *self,
g_autofree char *temp_filename = NULL;
g_autoptr(GOutputStream) ret_stream = NULL;
gboolean have_obj;
char loose_objpath[_OSTREE_LOOSE_PATH_MAX];
if (!_ostree_repo_has_loose_object (self, checksum, OSTREE_OBJECT_TYPE_FILE,
&have_obj, loose_objpath,
NULL,
if (!_ostree_repo_has_loose_object (self, checksum, OSTREE_OBJECT_TYPE_FILE, &have_obj,
cancellable, error))
goto out;
@ -662,7 +659,6 @@ write_object (OstreeRepo *self,
gboolean temp_file_is_regular;
gboolean temp_file_is_symlink;
gboolean object_is_symlink = FALSE;
char loose_objpath[_OSTREE_LOOSE_PATH_MAX];
gssize unpacked_size = 0;
gboolean indexable = FALSE;
@ -673,9 +669,8 @@ write_object (OstreeRepo *self,
if (expected_checksum)
{
if (!_ostree_repo_has_loose_object (self, expected_checksum, objtype,
&have_obj, loose_objpath,
NULL, cancellable, error))
if (!_ostree_repo_has_loose_object (self, expected_checksum, objtype, &have_obj,
cancellable, error))
goto out;
if (have_obj)
{
@ -852,8 +847,7 @@ write_object (OstreeRepo *self,
repo_store_size_entry (self, actual_checksum, unpacked_size, stbuf.st_size);
}
if (!_ostree_repo_has_loose_object (self, actual_checksum, objtype,
&have_obj, loose_objpath, NULL,
if (!_ostree_repo_has_loose_object (self, actual_checksum, objtype, &have_obj,
cancellable, error))
goto out;

View File

@ -135,8 +135,6 @@ _ostree_repo_has_loose_object (OstreeRepo *self,
const char *checksum,
OstreeObjectType objtype,
gboolean *out_is_stored,
char *loose_path_buf,
GFile **out_stored_path,
GCancellable *cancellable,
GError **error);

View File

@ -3292,15 +3292,13 @@ _ostree_repo_has_loose_object (OstreeRepo *self,
const char *checksum,
OstreeObjectType objtype,
gboolean *out_is_stored,
char *loose_path_buf,
GFile **out_stored_path,
GCancellable *cancellable,
GError **error)
{
gboolean ret = FALSE;
struct stat stbuf;
int res = -1;
gboolean tmp_file = FALSE;
char loose_path_buf[_OSTREE_LOOSE_PATH_MAX];
_ostree_loose_path (loose_path_buf, checksum, objtype, self->mode);
@ -3316,9 +3314,7 @@ _ostree_repo_has_loose_object (OstreeRepo *self,
}
}
if (res == 0)
tmp_file = TRUE;
else
if (res < 0)
{
do
res = fstatat (self->objects_dir_fd, loose_path_buf, &stbuf, AT_SYMLINK_NOFOLLOW);
@ -3332,32 +3328,10 @@ _ostree_repo_has_loose_object (OstreeRepo *self,
ret = TRUE;
*out_is_stored = (res != -1);
if (out_stored_path)
{
if (res != -1)
*out_stored_path = g_file_resolve_relative_path (tmp_file ? self->tmp_dir : self->objects_dir, loose_path_buf);
else
*out_stored_path = NULL;
}
out:
return ret;
}
gboolean
_ostree_repo_find_object (OstreeRepo *self,
OstreeObjectType objtype,
const char *checksum,
GFile **out_stored_path,
GCancellable *cancellable,
GError **error)
{
gboolean has_object;
char loose_path[_OSTREE_LOOSE_PATH_MAX];
return _ostree_repo_has_loose_object (self, checksum, objtype, &has_object, loose_path,
out_stored_path, cancellable, error);
}
/**
* ostree_repo_has_object:
* @self: Repo
@ -3382,13 +3356,12 @@ ostree_repo_has_object (OstreeRepo *self,
{
gboolean ret = FALSE;
gboolean ret_have_object;
g_autoptr(GFile) loose_path = NULL;
if (!_ostree_repo_find_object (self, objtype, checksum, &loose_path,
cancellable, error))
if (!_ostree_repo_has_loose_object (self, checksum, objtype, &ret_have_object,
cancellable, error))
goto out;
ret_have_object = (loose_path != NULL);
/* In the future, here is where we would also look up in metadata pack files */
if (!ret_have_object && self->parent_repo)
{