serialize: add deserialize_strv helper

This commit is contained in:
Luca Boccassi
2023-06-01 19:32:29 +01:00
parent 71588cb6ad
commit 1d6f1e2fa1
3 changed files with 16 additions and 4 deletions

View 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;

View 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);

View 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));