diff options
author | Stef Walter <stefw@redhat.com> | 2013-08-14 11:46:50 +0200 |
---|---|---|
committer | Stef Walter <stefw@redhat.com> | 2013-08-15 06:52:53 +0200 |
commit | 5efb8e86e9d76e46aceb3a2043fe66a53a7821d8 (patch) | |
tree | 9dbeab19c6e748592d3d2b7bf4ecc8be48136965 | |
parent | 790132a81aaea6327a7201ce1284bece98fdec4f (diff) | |
download | ostree-5efb8e86e9d76e46aceb3a2043fe66a53a7821d8.tar.gz |
Add ostree_commit_get_parent() to get parent from variant
https://bugzilla.gnome.org/show_bug.cgi?id=705973
-rw-r--r-- | src/libostree/ostree-core.c | 10 | ||||
-rw-r--r-- | src/libostree/ostree-core.h | 1 | ||||
-rw-r--r-- | src/libostree/ostree-repo-traverse.c | 9 |
3 files changed, 14 insertions, 6 deletions
diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c index 92311418..f746b337 100644 --- a/src/libostree/ostree-core.c +++ b/src/libostree/ostree-core.c @@ -1643,3 +1643,13 @@ ostree_validate_structureof_dirmeta (GVariant *dirmeta, out: return ret; } + +gchar * +ostree_commit_get_parent (GVariant *commit_variant) +{ + gs_unref_variant GVariant *bytes = NULL; + bytes = g_variant_get_child_value (commit_variant, 1); + if (g_variant_n_children (bytes) == 0) + return NULL; + return ostree_checksum_from_bytes_v (bytes); +} diff --git a/src/libostree/ostree-core.h b/src/libostree/ostree-core.h index a28b0ca8..b2d24e64 100644 --- a/src/libostree/ostree-core.h +++ b/src/libostree/ostree-core.h @@ -319,5 +319,6 @@ gboolean ostree_validate_structureof_dirtree (GVariant *index, gboolean ostree_validate_structureof_dirmeta (GVariant *index, GError **error); +gchar * ostree_commit_get_parent (GVariant *commit_variant); G_END_DECLS diff --git a/src/libostree/ostree-repo-traverse.c b/src/libostree/ostree-repo-traverse.c index 996033e9..d15fc6ca 100644 --- a/src/libostree/ostree-repo-traverse.c +++ b/src/libostree/ostree-repo-traverse.c @@ -211,12 +211,10 @@ ostree_repo_traverse_commit (OstreeRepo *repo, if (maxdepth == -1 || maxdepth > 0) { - g_variant_get_child (commit, 1, "@ay", &parent_csum_bytes); - - if (g_variant_n_children (parent_csum_bytes) > 0) + g_free (tmp_checksum); + tmp_checksum = ostree_commit_get_parent (commit); + if (tmp_checksum) { - g_free (tmp_checksum); - tmp_checksum = ostree_checksum_from_bytes_v (parent_csum_bytes); commit_checksum = tmp_checksum; if (maxdepth > 0) maxdepth -= 1; @@ -231,4 +229,3 @@ ostree_repo_traverse_commit (OstreeRepo *repo, out: return ret; } - |