diff options
author | Colin Walters <walters@verbum.org> | 2012-03-05 11:32:48 -0500 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2012-03-06 11:59:06 -0500 |
commit | eb7c3d01a30b3e6f7a2ba9bae30a796480bed891 (patch) | |
tree | bd4cc493e2d57aa7198fa56d1d49d0680d4408f0 /src/libostree/ostree-repo-file.c | |
parent | 9dc86d0f5e8ac5d48065b13db205aa8110dbb39f (diff) | |
download | ostree-eb7c3d01a30b3e6f7a2ba9bae30a796480bed891.tar.gz |
core: Add 'cat' builtin
Diffstat (limited to 'src/libostree/ostree-repo-file.c')
-rw-r--r-- | src/libostree/ostree-repo-file.c | 18 |
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: |