serialize: add open_serialization_file()

This commit is contained in:
Luca Boccassi
2023-10-12 13:37:22 +01:00
parent 1b30ccd81b
commit 81b913f076
4 changed files with 32 additions and 13 deletions
+1 -13
View File
@@ -18,21 +18,9 @@
#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) {
+19
View 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;
}
+1
View 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);
+11
View 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;