diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-03-31 16:12:39 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-04-04 11:46:18 +0900 |
commit | c227c46b8b6fefe2604ca110b2e2c4e4f78c2c9d (patch) | |
tree | 7466f74e2226acda45e9cfc33e506c9028690c54 /src/libsystemd/sd-id128 | |
parent | 0f44b76601d6ca31a634597ce79304efa5af0153 (diff) | |
download | systemd-c227c46b8b6fefe2604ca110b2e2c4e4f78c2c9d.tar.gz |
sd-id128: introduce id128_write_at()
Diffstat (limited to 'src/libsystemd/sd-id128')
-rw-r--r-- | src/libsystemd/sd-id128/id128-util.c | 7 | ||||
-rw-r--r-- | src/libsystemd/sd-id128/id128-util.h | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/libsystemd/sd-id128/id128-util.c b/src/libsystemd/sd-id128/id128-util.c index 94094ed208..3fa1585aa3 100644 --- a/src/libsystemd/sd-id128/id128-util.c +++ b/src/libsystemd/sd-id128/id128-util.c @@ -145,14 +145,15 @@ int id128_write_fd(int fd, Id128Flag f, sd_id128_t id) { return 0; } -int id128_write(const char *path, Id128Flag f, sd_id128_t id) { +int id128_write_at(int dir_fd, const char *path, Id128Flag f, sd_id128_t id) { _cleanup_close_ int fd = -EBADF; + assert(dir_fd >= 0 || dir_fd == AT_FDCWD); assert(path); - fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY|O_TRUNC, 0444); + fd = xopenat(dir_fd, path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY|O_TRUNC, 0444); if (fd < 0) - return -errno; + return fd; return id128_write_fd(fd, f, id); } diff --git a/src/libsystemd/sd-id128/id128-util.h b/src/libsystemd/sd-id128/id128-util.h index 7bab3e8303..fde58a5228 100644 --- a/src/libsystemd/sd-id128/id128-util.h +++ b/src/libsystemd/sd-id128/id128-util.h @@ -26,7 +26,10 @@ static inline int id128_read(const char *path, Id128Flag f, sd_id128_t *ret) { } int id128_write_fd(int fd, Id128Flag f, sd_id128_t id); -int id128_write(const char *path, Id128Flag f, sd_id128_t id); +int id128_write_at(int dir_fd, const char *path, Id128Flag f, sd_id128_t id); +static inline int id128_write(const char *path, Id128Flag f, sd_id128_t id) { + return id128_write_at(AT_FDCWD, path, f, id); +} void id128_hash_func(const sd_id128_t *p, struct siphash *state); int id128_compare_func(const sd_id128_t *a, const sd_id128_t *b) _pure_; |