Merge branch 'giuseppe/staticdeltas' of https://github.com/giuseppe/ostree

This commit is contained in:
Colin Walters committed 2014-12-19 16:31:31 -05:00
commit 1bcc7a8e3a
14 files changed
+1937 -473

No files matched your search

+51 -2
View File
@@ -1342,11 +1342,31 @@ _ostree_get_relative_object_path (const char *checksum,
return g_string_free (path, FALSE);
}
static char *
get_delta_path (const char *from,
const char *to,
const char *target)
{
char prefix[3];
prefix[0] = from[0];
prefix[1] = from[1];
prefix[2] = '\0';
from += 2;
return g_strconcat ("deltas/", prefix, "/", from, "-", to, "/", target, NULL);
}
char *
_ostree_get_relative_static_delta_path (const char *from,
const char *to)
{
return g_strdup_printf ("deltas/%s-%s/meta", from, to);
return get_delta_path (from, to, "superblock");
}
char *
_ostree_get_relative_static_delta_detachedmeta_path (const char *from,
const char *to)
{
return get_delta_path (from, to, "meta");
}
char *
@@ -1354,7 +1374,8 @@ _ostree_get_relative_static_delta_part_path (const char *from,
const char *to,
guint i)
{
return g_strdup_printf ("deltas/%s-%s/%u", from, to, i);
gs_free char *partstr = g_strdup_printf ("%u", i);
return get_delta_path (from, to, partstr);
}
/*
@@ -1783,3 +1804,31 @@ ostree_commit_get_timestamp (GVariant *commit_variant)
g_variant_get_child (commit_variant, 5, "t", &ret);
return GUINT64_FROM_BE (ret);
}
GVariant *
_ostree_detached_metadata_append_gpg_sig (GVariant *existing_metadata,
GBytes *signature_bytes)
{
GVariantBuilder *builder = NULL;
gs_unref_variant GVariant *signaturedata = NULL;
gs_unref_variant_builder GVariantBuilder *signature_builder = NULL;
if (existing_metadata)
{
builder = ot_util_variant_builder_from_variant (existing_metadata, G_VARIANT_TYPE ("a{sv}"));
signaturedata = g_variant_lookup_value (existing_metadata, "ostree.gpgsigs", G_VARIANT_TYPE ("aay"));
if (signaturedata)
signature_builder = ot_util_variant_builder_from_variant (signaturedata, G_VARIANT_TYPE ("aay"));
}
if (!builder)
builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}"));
if (!signature_builder)
signature_builder = g_variant_builder_new (G_VARIANT_TYPE ("aay"));
g_variant_builder_add (signature_builder, "@ay", ot_gvariant_new_ay_bytes (signature_bytes));
g_variant_builder_add (builder, "{sv}", "ostree.gpgsigs", g_variant_builder_end (signature_builder));
return g_variant_ref_sink (g_variant_builder_end (builder));
}