summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-repo-file.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2012-03-05 11:32:48 -0500
committerColin Walters <walters@verbum.org>2012-03-06 11:59:06 -0500
commiteb7c3d01a30b3e6f7a2ba9bae30a796480bed891 (patch)
treebd4cc493e2d57aa7198fa56d1d49d0680d4408f0 /src/libostree/ostree-repo-file.c
parent9dc86d0f5e8ac5d48065b13db205aa8110dbb39f (diff)
downloadostree-eb7c3d01a30b3e6f7a2ba9bae30a796480bed891.tar.gz
core: Add 'cat' builtin
Diffstat (limited to 'src/libostree/ostree-repo-file.c')
-rw-r--r--src/libostree/ostree-repo-file.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/libostree/ostree-repo-file.c b/src/libostree/ostree-repo-file.c
index dd22d380..625067dd 100644
--- a/src/libostree/ostree-repo-file.c
+++ b/src/libostree/ostree-repo-file.c
@@ -989,6 +989,7 @@ ostree_repo_file_read (GFile *file,
GFile *local_file = NULL;
GFileInputStream *ret_stream = NULL;
OstreeRepoFile *self = OSTREE_REPO_FILE (file);
+ const char *checksum;
if (self->tree_contents)
{
@@ -998,20 +999,21 @@ ostree_repo_file_read (GFile *file,
goto out;
}
+ checksum = ostree_repo_file_get_checksum (self);
+
if (ostree_repo_get_mode (self->repo) == OSTREE_REPO_MODE_ARCHIVE)
{
- g_set_error_literal (error, G_IO_ERROR,
- G_IO_ERROR_NOT_SUPPORTED,
- "Can't open archived file (yet)");
- goto out;
+ local_file = ostree_repo_get_object_path (self->repo, checksum,
+ OSTREE_OBJECT_TYPE_ARCHIVED_FILE_CONTENT);
}
else
{
- local_file = ostree_repo_file_nontree_get_local (self);
- ret_stream = g_file_read (local_file, cancellable, error);
- if (!ret_stream)
- goto out;
+ local_file = ostree_repo_get_file_object_path (self->repo, checksum);
}
+
+ ret_stream = g_file_read (local_file, cancellable, error);
+ if (!ret_stream)
+ goto out;
ret = TRUE;
out: