serialize: add open_serialization_file()
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user