summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-id128
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-03-31 16:12:39 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2023-04-04 11:46:18 +0900
commitc227c46b8b6fefe2604ca110b2e2c4e4f78c2c9d (patch)
tree7466f74e2226acda45e9cfc33e506c9028690c54 /src/libsystemd/sd-id128
parent0f44b76601d6ca31a634597ce79304efa5af0153 (diff)
downloadsystemd-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.c7
-rw-r--r--src/libsystemd/sd-id128/id128-util.h5
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_;