From 678392aa6bef5e30cb1b9452978fd0b2ce56c2ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 19 Feb 2024 11:38:02 +0100 Subject: Merging upstream version 1.8. Signed-off-by: Daniel Baumann --- src/nvme/util.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'src/nvme/util.c') diff --git a/src/nvme/util.c b/src/nvme/util.c index 45512ff..f091da7 100644 --- a/src/nvme/util.c +++ b/src/nvme/util.c @@ -757,7 +757,7 @@ char *kv_keymatch(const char *kv, const char *key) static size_t read_file(const char * fname, char *buffer, size_t *bufsz) { char *p; - _cleanup_file_ FILE *file; + _cleanup_file_ FILE *file = NULL; size_t len; file = fopen(fname, "re"); @@ -806,7 +806,7 @@ size_t get_entity_name(char *buffer, size_t bufsz) size_t get_entity_version(char *buffer, size_t bufsz) { - _cleanup_file_ FILE *file; + _cleanup_file_ FILE *file = NULL; size_t num_bytes = 0; /* /proc/sys/kernel/ostype typically contains the string "Linux" */ @@ -928,7 +928,7 @@ int nvme_uuid_from_string(const char *str, unsigned char uuid[NVME_UUID_LEN]) int nvme_uuid_random(unsigned char uuid[NVME_UUID_LEN]) { - _cleanup_fd_ int f; + _cleanup_fd_ int f = -1; ssize_t n; f = open("/dev/urandom", O_RDONLY); @@ -951,6 +951,25 @@ int nvme_uuid_random(unsigned char uuid[NVME_UUID_LEN]) return 0; } +int nvme_uuid_find(struct nvme_id_uuid_list *uuid_list, const unsigned char uuid[NVME_UUID_LEN]) +{ + const unsigned char uuid_end[NVME_UUID_LEN] = {0}; + + if ((!uuid_list) || (!uuid)) { + errno = EINVAL; + return -1; + } + + for (int i = 0; i < NVME_ID_UUID_LIST_MAX; i++) { + if (memcmp(uuid, &uuid_list->entry[i].uuid, NVME_UUID_LEN) == 0) + return i + 1; + if (memcmp(uuid_end, &uuid_list->entry[i].uuid, NVME_UUID_LEN) == 0) + break; + } + errno = ENOENT; + return -1; +} + #ifdef HAVE_NETDB static bool _nvme_ipaddrs_eq(struct sockaddr *addr1, struct sockaddr *addr2) { -- cgit v1.2.3