summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStef Walter <stefw@redhat.com>2013-08-14 11:46:50 +0200
committerStef Walter <stefw@redhat.com>2013-08-15 06:52:53 +0200
commit5efb8e86e9d76e46aceb3a2043fe66a53a7821d8 (patch)
tree9dbeab19c6e748592d3d2b7bf4ecc8be48136965
parent790132a81aaea6327a7201ce1284bece98fdec4f (diff)
downloadostree-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.c10
-rw-r--r--src/libostree/ostree-core.h1
-rw-r--r--src/libostree/ostree-repo-traverse.c9
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;
}
-