diff options
Diffstat (limited to 'src/libnm-systemd-core/src/libsystemd/sd-id128/id128-util.h')
-rw-r--r-- | src/libnm-systemd-core/src/libsystemd/sd-id128/id128-util.h | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/libnm-systemd-core/src/libsystemd/sd-id128/id128-util.h b/src/libnm-systemd-core/src/libsystemd/sd-id128/id128-util.h index e094de6441..7bcbd8e558 100644 --- a/src/libnm-systemd-core/src/libsystemd/sd-id128/id128-util.h +++ b/src/libnm-systemd-core/src/libsystemd/sd-id128/id128-util.h @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include <fcntl.h> #include <stdbool.h> #include "sd-id128.h" @@ -10,19 +11,29 @@ bool id128_is_valid(const char *s) _pure_; -typedef enum Id128FormatFlag { - ID128_FORMAT_PLAIN = 1 << 0, /* formatted as 32 hex chars as-is */ - ID128_FORMAT_UUID = 1 << 1, /* formatted as 36 character uuid string */ - ID128_FORMAT_ANY = ID128_FORMAT_PLAIN | ID128_FORMAT_UUID, +typedef enum Id128Flag { + ID128_FORMAT_PLAIN = 1 << 0, /* formatted as 32 hex chars as-is */ + ID128_FORMAT_UUID = 1 << 1, /* formatted as 36 character uuid string */ + ID128_FORMAT_ANY = ID128_FORMAT_PLAIN | ID128_FORMAT_UUID, ID128_SYNC_ON_WRITE = 1 << 2, /* Sync the file after write. Used only when writing an ID. */ -} Id128FormatFlag; - -int id128_read_fd(int fd, Id128FormatFlag f, sd_id128_t *ret); -int id128_read(const char *p, Id128FormatFlag f, sd_id128_t *ret); - -int id128_write_fd(int fd, Id128FormatFlag f, sd_id128_t id); -int id128_write(const char *p, Id128FormatFlag f, sd_id128_t id); + ID128_REFUSE_NULL = 1 << 3, /* Refuse all zero ID with -ENOMEDIUM. */ +} Id128Flag; + +int id128_read_fd(int fd, Id128Flag f, sd_id128_t *ret); +int id128_read_at(int dir_fd, const char *path, Id128Flag f, sd_id128_t *ret); +static inline int id128_read(const char *path, Id128Flag f, sd_id128_t *ret) { + return id128_read_at(AT_FDCWD, path, f, ret); +} + +int id128_write_fd(int fd, 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); +} + +int id128_get_machine(const char *root, sd_id128_t *ret); +int id128_get_machine_at(int rfd, sd_id128_t *ret); 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_; |