From 8c21fd00c98582703f1d0f701cd5bbfca2644b40 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 19 Feb 2024 11:37:58 +0100 Subject: Adding upstream version 1.8. Signed-off-by: Daniel Baumann --- test/sysfs/sysfs.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 test/sysfs/sysfs.c (limited to 'test/sysfs/sysfs.c') diff --git a/test/sysfs/sysfs.c b/test/sysfs/sysfs.c new file mode 100644 index 0000000..c2df178 --- /dev/null +++ b/test/sysfs/sysfs.c @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/** + * This file is part of libnvme. + * Copyright (c) 2024 Daniel Wagner, SUSE LLC + */ + +#include "nvme/tree.h" +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +static bool test_sysfs(const char *path, const char *filename) +{ + FILE *f; + nvme_root_t r; + int err; + + f = fopen(filename, "w"); + if (!f) + return false; + + r = nvme_create_root(f, LOG_ERR); + assert(r); + + err = nvme_scan_topology(r, NULL, NULL); + if (!err) + nvme_dump_tree(r); + fprintf(f, "\n"); + + nvme_free_tree(r); + fclose(f); + + return err == 0; +} + +static bool compare_content(const char *filename1, const char *filename2) +{ + FILE *f1, *f2; + char c1, c2; + bool pass = false; + + f1 = fopen(filename1, "r"); + if (!f1) + return false; + + f2 = fopen(filename2, "r"); + if (!f2) { + fclose(f1); + return false; + } + + do { + c1 = getc(f1); + c2 = getc(f2); + if (c1 != c2) + goto out; + } while (c1 != EOF || c2 != EOF); + + if (c1 == c2) + pass = true; +out: + fclose(f1); + fclose(f2); + + return pass; +} + +int main(int argc, char *argv[]) +{ + bool pass = true; + + if (argc < 4) { + fprintf(stderr, "usage: test-sysfs SYSFS_DIR OUTPUT_FILE COMPARE_FILE\n"); + return EXIT_FAILURE; + } + + pass &= test_sysfs(argv[1], argv[2]); + pass &= compare_content(argv[2], argv[3]); + + exit(pass ? EXIT_SUCCESS : EXIT_FAILURE); +} -- cgit v1.2.3