From: Lennart Poettering Date: Thu, 4 Jul 2019 15:56:00 +0000 (+0200) Subject: json: add new helper json_variant_new_base64() X-Git-Tag: v245-rc1~249^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc164891da2922c52028420197cb0408c184378e;p=thirdparty%2Fsystemd.git json: add new helper json_variant_new_base64() --- diff --git a/src/shared/json.c b/src/shared/json.c index a5bf525c87a..7ea13139705 100644 --- a/src/shared/json.c +++ b/src/shared/json.c @@ -411,6 +411,20 @@ int json_variant_new_stringn(JsonVariant **ret, const char *s, size_t n) { return 0; } +int json_variant_new_base64(JsonVariant **ret, const void *p, size_t n) { + _cleanup_free_ char *s = NULL; + ssize_t k; + + assert_return(ret, -EINVAL); + assert_return(n == 0 || p, -EINVAL); + + k = base64mem(p, n, &s); + if (k < 0) + return k; + + return json_variant_new_stringn(ret, s, k); +} + static void json_variant_set(JsonVariant *a, JsonVariant *b) { assert(a); diff --git a/src/shared/json.h b/src/shared/json.h index 432a66fe41c..e95e3baed1d 100644 --- a/src/shared/json.h +++ b/src/shared/json.h @@ -55,6 +55,7 @@ typedef enum JsonVariantType { } JsonVariantType; int json_variant_new_stringn(JsonVariant **ret, const char *s, size_t n); +int json_variant_new_base64(JsonVariant **ret, const void *p, size_t n); int json_variant_new_integer(JsonVariant **ret, intmax_t i); int json_variant_new_unsigned(JsonVariant **ret, uintmax_t u); int json_variant_new_real(JsonVariant **ret, long double d);