]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
serialize: add open_serialization_file()
authorLuca Boccassi <bluca@debian.org>
Tue, 19 Sep 2023 00:19:10 +0000 (01:19 +0100)
committerLuca Boccassi <bluca@debian.org>
Thu, 12 Oct 2023 12:37:22 +0000 (13:37 +0100)
src/core/manager-serialize.c
src/shared/serialize.c
src/shared/serialize.h
src/test/test-fd-util.c

index 3d6af0d046b1ae5f5aedb8b058e68090e67d5862..8be54c7ccc0ce3ae7592e376bb1850d3a8c0aff2 100644 (file)
 #include "varlink-internal.h"
 
 int manager_open_serialization(Manager *m, FILE **ret_f) {
-        _cleanup_close_ int fd = -EBADF;
-        FILE *f;
-
         assert(ret_f);
 
-        fd = open_serialization_fd("systemd-state");
-        if (fd < 0)
-                return fd;
-
-        f = take_fdopen(&fd, "w+");
-        if (!f)
-                return -errno;
-
-        *ret_f = f;
-        return 0;
+        return open_serialization_file("systemd-state", ret_f);
 }
 
 static bool manager_timestamp_shall_serialize(ManagerTimestamp t) {
index 525adc73ed0f50cee569b4809f99071a671d1003..3606390b99c9ac787f7cd8b70600a1f0ebd9700a 100644 (file)
@@ -400,3 +400,22 @@ int open_serialization_fd(const char *ident) {
 
         return fd;
 }
+
+int open_serialization_file(const char *ident, FILE **ret) {
+        _cleanup_fclose_ FILE *f = NULL;
+        _cleanup_close_ int fd;
+
+        assert(ret);
+
+        fd = open_serialization_fd(ident);
+        if (fd < 0)
+                return fd;
+
+        f = take_fdopen(&fd, "w+");
+        if (!f)
+                return -errno;
+
+        *ret = TAKE_PTR(f);
+
+        return 0;
+}
index 1b2c435f775d7bb76506ac85536ec65929ddad1e..82657bc873276d40c9298f2130e030cc2d60ac94 100644 (file)
@@ -42,3 +42,4 @@ int deserialize_strv(char ***l, const char *value);
 int deserialize_pidref(FDSet *fds, const char *value, PidRef *ret);
 
 int open_serialization_fd(const char *ident);
+int open_serialization_file(const char *ident, FILE **ret);
index 20d412f5c6c82292644e47d365a5bd1880db986c..67ec3e59f1f93a3267c82585ac6f66002ff85a7c 100644 (file)
@@ -100,6 +100,17 @@ TEST(open_serialization_fd) {
         assert_se(write(fd, "test\n", 5) == 5);
 }
 
+TEST(open_serialization_file) {
+        _cleanup_fclose_ FILE *f = NULL;
+        int r;
+
+        r = open_serialization_file("test", &f);
+        assert_se(r >= 0);
+        assert_se(f);
+
+        assert_se(fwrite("test\n", 1, 5, f) == 5);
+}
+
 TEST(fd_move_above_stdio) {
         int original_stdin, new_fd;