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 authored and Colin Walters (automation) committed 2016-04-21 19:50:53 +00:00
1 parent 8f8ab56211
commit 8609cb036b
3 files changed
+9 -44

No files matched your search

+5 -32
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)
{