]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
serialize: add deserialize_strv helper 27980/head
authorLuca Boccassi <bluca@debian.org>
Thu, 1 Jun 2023 18:32:29 +0000 (19:32 +0100)
committerLuca Boccassi <bluca@debian.org>
Thu, 8 Jun 2023 23:49:19 +0000 (00:49 +0100)
src/shared/serialize.c
src/shared/serialize.h
src/test/test-serialize.c

index 9d1a21360fdc34552d574e0ad3f73094b9e472ed..5396062a8be026dd37cb2aacd673768d4ab2d4a5 100644 (file)
@@ -131,6 +131,20 @@ int serialize_strv(FILE *f, const char *key, char **l) {
         return ret;
 }
 
+int deserialize_strv(char ***l, const char *value) {
+        ssize_t unescaped_len;
+        char *unescaped;
+
+        assert(l);
+        assert(value);
+
+        unescaped_len = cunescape(value, 0, &unescaped);
+        if (unescaped_len < 0)
+                return unescaped_len;
+
+        return strv_consume(l, unescaped);
+}
+
 int deserialize_usec(const char *value, usec_t *ret) {
         int r;
 
index 6d4f1ef4181bbfe7e13ed349ab242e54e5db5674..8fdc6dc304ebff69a60bc2482bef0d4fb0773d6a 100644 (file)
@@ -23,5 +23,6 @@ static inline int serialize_bool(FILE *f, const char *key, bool b) {
 int deserialize_usec(const char *value, usec_t *timestamp);
 int deserialize_dual_timestamp(const char *value, dual_timestamp *t);
 int deserialize_environment(const char *value, char ***environment);
+int deserialize_strv(char ***l, const char *value);
 
 int open_serialization_fd(const char *ident);
index bcf2e843b0985102ac4e08f1940def4a6c946a8d..a297e9515edb5f6effb685c1b71d20faf8a27664 100644 (file)
@@ -124,10 +124,7 @@ TEST(serialize_strv) {
 
                 const char *t = startswith(line, "strv3=");
                 assert_se(t);
-
-                char *un;
-                assert_se(cunescape(t, 0, &un) >= 0);
-                assert_se(strv_consume(&strv2, un) >= 0);
+                assert_se(deserialize_strv(&strv2, t) >= 0);
         }
 
         assert_se(strv_equal(strv, strv2));