[ostree] core: Convert public get_object_path() to GFile*
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] core: Convert public get_object_path() to GFile*
- Date: Fri, 18 Nov 2011 14:57:17 +0000 (UTC)
commit 860c3cf502226d093ba291b2ae90d3f1044598ef
Author: Colin Walters <walters verbum org>
Date: Fri Nov 18 09:04:25 2011 -0500
core: Convert public get_object_path() to GFile*
src/libostree/ostree-repo-file.c | 20 +----------
src/libostree/ostree-repo.c | 68 ++++++++++++++++++++------------------
src/libostree/ostree-repo.h | 2 +-
src/ostree/ot-builtin-show.c | 7 +---
4 files changed, 40 insertions(+), 57 deletions(-)
---
diff --git a/src/libostree/ostree-repo-file.c b/src/libostree/ostree-repo-file.c
index 0260a80..c4ff123 100644
--- a/src/libostree/ostree-repo-file.c
+++ b/src/libostree/ostree-repo-file.c
@@ -388,18 +388,9 @@ _ostree_repo_file_tree_get_content_checksum (OstreeRepoFile *self)
GFile *
_ostree_repo_file_nontree_get_local (OstreeRepoFile *self)
{
- const char *checksum;
- char *path;
- GFile *ret;
-
g_assert (!ostree_repo_is_archive (self->repo));
- checksum = _ostree_repo_file_get_checksum (self);
- path = ostree_repo_get_object_path (self->repo, checksum, OSTREE_OBJECT_TYPE_FILE);
- ret = ot_gfile_new_for_path (path);
- g_free (path);
-
- return ret;
+ return ostree_repo_get_object_path (self->repo, _ostree_repo_file_get_checksum (self), OSTREE_OBJECT_TYPE_FILE);
}
OstreeRepo *
@@ -699,14 +690,7 @@ static GFile *
get_child_local_file (OstreeRepo *repo,
const char *checksum)
{
- char *path;
- GFile *ret;
-
- path = ostree_repo_get_object_path (repo, checksum, OSTREE_OBJECT_TYPE_FILE);
- ret = ot_gfile_new_for_path (path);
- g_free (path);
-
- return ret;
+ return ostree_repo_get_object_path (repo, checksum, OSTREE_OBJECT_TYPE_FILE);
}
static gboolean
diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c
index cb82bcc..4e113e6 100644
--- a/src/libostree/ostree-repo.c
+++ b/src/libostree/ostree-repo.c
@@ -733,43 +733,49 @@ import_directory_meta (OstreeRepo *self,
return ret;
}
-char *
+GFile *
ostree_repo_get_object_path (OstreeRepo *self,
const char *checksum,
OstreeObjectType type)
{
OstreeRepoPrivate *priv = GET_PRIVATE (self);
- char *ret;
+ char *path;
char *relpath;
+ GFile *ret;
relpath = ostree_get_relative_object_path (checksum, type, priv->archive);
- ret = g_build_filename (priv->path, relpath, NULL);
+ path = g_build_filename (priv->path, relpath, NULL);
g_free (relpath);
+ ret = ot_gfile_new_for_path (path);
+ g_free (path);
return ret;
}
-static char *
+static gboolean
prepare_dir_for_checksum_get_object_path (OstreeRepo *self,
const char *checksum,
OstreeObjectType type,
+ GFile **out_file,
GError **error)
{
- GFile *f = NULL;
- char *checksum_dir = NULL;
- char *object_path = NULL;
+ gboolean ret = FALSE;
+ GFile *checksum_dir = NULL;
+ GFile *ret_file = NULL;
- object_path = ostree_repo_get_object_path (self, checksum, type);
- checksum_dir = g_path_get_dirname (object_path);
- f = ot_gfile_new_for_path (checksum_dir);
+ ret_file = ostree_repo_get_object_path (self, checksum, type);
+ checksum_dir = g_file_get_parent (ret_file);
- if (!ot_gfile_ensure_directory (f, FALSE, error))
+ if (!ot_gfile_ensure_directory (checksum_dir, FALSE, error))
goto out;
+ ret = TRUE;
+ *out_file = ret_file;
+ ret_file = NULL;
out:
- g_clear_object (&f);
- g_free (checksum_dir);
- return object_path;
+ g_clear_object (&checksum_dir);
+ g_clear_object (&ret_file);
+ return ret;
}
static gboolean
@@ -790,7 +796,8 @@ link_object_trusted (OstreeRepo *self,
DIR *src_dir = NULL;
DIR *dest_dir = NULL;
gboolean ret = FALSE;
- char *dest_path = NULL;
+ const char *dest_path = NULL;
+ GFile *dest_file = NULL;
src_basename = g_path_get_basename (path);
src_dirname = g_path_get_dirname (path);
@@ -802,9 +809,9 @@ link_object_trusted (OstreeRepo *self,
goto out;
}
- dest_path = prepare_dir_for_checksum_get_object_path (self, checksum, objtype, error);
- if (!dest_path)
+ if (!prepare_dir_for_checksum_get_object_path (self, checksum, objtype, &dest_file, error))
goto out;
+ dest_path = ot_gfile_get_path_cached (dest_file);
dest_basename = g_path_get_basename (dest_path);
dest_dirname = g_path_get_dirname (dest_path);
@@ -858,7 +865,7 @@ link_object_trusted (OstreeRepo *self,
g_free (dest_basename);
g_free (tmp_dest_basename);
g_free (dest_dirname);
- g_free (dest_path);
+ g_clear_object (&dest_file);
return ret;
}
@@ -876,14 +883,15 @@ archive_file_trusted (OstreeRepo *self,
GFile *outfile = NULL;
GFileOutputStream *out = NULL;
gboolean ret = FALSE;
- char *dest_path = NULL;
+ const char *dest_path = NULL;
+ GFile *dest_file = NULL;
char *dest_tmp_path = NULL;
infile = ot_gfile_new_for_path (path);
- dest_path = prepare_dir_for_checksum_get_object_path (self, checksum, objtype, error);
- if (!dest_path)
+ if (!prepare_dir_for_checksum_get_object_path (self, checksum, objtype, &dest_file, error))
goto out;
+ dest_path = ot_gfile_get_path_cached (dest_file);
dest_tmp_path = g_strconcat (dest_path, ".tmp", NULL);
@@ -906,7 +914,7 @@ archive_file_trusted (OstreeRepo *self,
ret = TRUE;
out:
- g_free (dest_path);
+ g_clear_object (&dest_file);
g_free (dest_tmp_path);
g_clear_object (&infile);
g_clear_object (&outfile);
@@ -1680,13 +1688,11 @@ ostree_repo_load_variant (OstreeRepo *self,
gboolean ret = FALSE;
OstreeSerializedVariantType ret_type;
GVariant *ret_variant = NULL;
- char *path = NULL;
GFile *f = NULL;
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
- path = ostree_repo_get_object_path (self, sha256, OSTREE_OBJECT_TYPE_META);
- f = ot_gfile_new_for_path (path);
+ f = ostree_repo_get_object_path (self, sha256, OSTREE_OBJECT_TYPE_META);
if (!ostree_parse_metadata_file (f, &ret_type, &ret_variant, error))
goto out;
@@ -1698,7 +1704,6 @@ ostree_repo_load_variant (OstreeRepo *self,
if (ret_variant)
g_variant_unref (ret_variant);
g_clear_object (&f);
- g_free (path);
return ret;
}
@@ -1764,7 +1769,7 @@ checkout_tree (OstreeRepo *self,
GFileInfo *file_info = NULL;
GFileEnumerator *dir_enum = NULL;
GFile *child = NULL;
- char *object_path = NULL;
+ GFile *object_path = NULL;
char *dest_path = NULL;
dir_enum = g_file_enumerate_children ((GFile*)dir, OSTREE_GIO_FAST_QUERYINFO,
@@ -1798,12 +1803,12 @@ checkout_tree (OstreeRepo *self,
if (priv->archive)
{
- if (!ostree_unpack_object (object_path, OSTREE_OBJECT_TYPE_FILE, dest_path, NULL, error))
+ if (!ostree_unpack_object (ot_gfile_get_path_cached (object_path), OSTREE_OBJECT_TYPE_FILE, dest_path, NULL, error))
goto out;
}
else
{
- if (link (object_path, dest_path) < 0)
+ if (link (ot_gfile_get_path_cached (object_path), dest_path) < 0)
{
ot_util_set_error_from_errno (error, errno);
goto out;
@@ -1811,8 +1816,7 @@ checkout_tree (OstreeRepo *self,
}
}
- g_free (object_path);
- object_path = NULL;
+ g_clear_object (&object_path);
g_free (dest_path);
dest_path = NULL;
g_clear_object (&file_info);
@@ -1829,7 +1833,7 @@ checkout_tree (OstreeRepo *self,
g_clear_object (&dir_enum);
g_clear_object (&file_info);
g_clear_object (&child);
- g_free (object_path);
+ g_clear_object (&object_path);
g_free (dest_path);
return ret;
}
diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h
index b840045..ec65bd9 100644
--- a/src/libostree/ostree-repo.h
+++ b/src/libostree/ostree-repo.h
@@ -65,7 +65,7 @@ gboolean ostree_repo_write_config (OstreeRepo *self,
GKeyFile *new_config,
GError **error);
-char * ostree_repo_get_object_path (OstreeRepo *self,
+GFile * ostree_repo_get_object_path (OstreeRepo *self,
const char *object,
OstreeObjectType type);
diff --git a/src/ostree/ot-builtin-show.c b/src/ostree/ot-builtin-show.c
index fac4e97..ae6bd81 100644
--- a/src/ostree/ot-builtin-show.c
+++ b/src/ostree/ot-builtin-show.c
@@ -113,14 +113,10 @@ do_print_packfile (OstreeRepo *repo,
{
gboolean ret = FALSE;
GVariant *variant = NULL;
- char *path = NULL;
GInputStream *content = NULL;
GFile *file = NULL;
- path = ostree_repo_get_object_path (repo, checksum, OSTREE_OBJECT_TYPE_FILE);
- if (!path)
- goto out;
- file = ot_gfile_new_for_path (path);
+ file = ostree_repo_get_object_path (repo, checksum, OSTREE_OBJECT_TYPE_FILE);
if (!ostree_parse_packed_file (file, &variant, &content, NULL, error))
goto out;
@@ -129,7 +125,6 @@ do_print_packfile (OstreeRepo *repo,
ret = TRUE;
out:
- g_free (path);
g_clear_object (&file);
g_clear_object (&content);
if (variant)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]