From: Lennart Poettering Date: Fri, 28 Jun 2019 18:05:21 +0000 (+0200) Subject: json: add json_variant_unbase64() helper X-Git-Tag: v245-rc1~249^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=faca141c5fb3b663216358d1798b38cd74b55c1b;p=thirdparty%2Fsystemd.git json: add json_variant_unbase64() helper --- diff --git a/src/shared/json.c b/src/shared/json.c index 7abbd1917d8..d1a477c36d6 100644 --- a/src/shared/json.c +++ b/src/shared/json.c @@ -4120,6 +4120,14 @@ bool json_variant_is_sorted(JsonVariant *v) { return v->sorted; } +int json_variant_unbase64(JsonVariant *v, void **ret, size_t *ret_size) { + + if (!json_variant_is_string(v)) + return -EINVAL; + + return unbase64mem(json_variant_string(v), (size_t) -1, ret, ret_size); +} + static const char* const json_variant_type_table[_JSON_VARIANT_TYPE_MAX] = { [JSON_VARIANT_STRING] = "string", [JSON_VARIANT_INTEGER] = "integer", diff --git a/src/shared/json.h b/src/shared/json.h index 749c25253f8..393e35a6479 100644 --- a/src/shared/json.h +++ b/src/shared/json.h @@ -324,5 +324,7 @@ int json_log_internal(JsonVariant *variant, int level, int error, const char *fi (JsonVariant*) ((uintptr_t) UNIQ_T(json_string_const, xq) + 1); \ }) +int json_variant_unbase64(JsonVariant *v, void **ret, size_t *ret_size); + const char *json_variant_type_to_string(JsonVariantType t); JsonVariantType json_variant_type_from_string(const char *s);