]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
json: add new helper json_variant_new_base64()
authorLennart Poettering <lennart@poettering.net>
Thu, 4 Jul 2019 15:56:00 +0000 (17:56 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 2 Dec 2019 08:47:00 +0000 (09:47 +0100)
src/shared/json.c
src/shared/json.h

index a5bf525c87a2c6888c09d51edc9119c738c16dc8..7ea131397051c03bbbc7b36906b4a9a74b2c3215 100644 (file)
@@ -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);
 
index 432a66fe41c1abd4eef9a186b7ca7cf858221d58..e95e3baed1dbb2047a96052ec3945407aa4ccbb0 100644 (file)
@@ -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);