From 1c10eb524fefdc0afdd2501ca6f0df9e8a775882 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 3 Mar 2026 04:11:29 +0000 Subject: util/nvmutil: cleaner directory checking opendir allocates resources and causes a bunch of other error conditions which we need to catch. use of stat is more efficient here. Signed-off-by: Leah Rowe --- util/nvmutil/nvmutil.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'util/nvmutil/nvmutil.c') diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index c171a1b8..36b29af2 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -138,16 +138,6 @@ set_io_flags(int argc, char *argv[]) flags = O_RDONLY; } -void -checkdir(const char *path) -{ - if (opendir(path) != NULL) - err(set_err(EISDIR), "%s", path); - if (errno == ENOTDIR) - errno = 0; - err_if(errno); -} - void openFiles(void) { @@ -171,6 +161,18 @@ openFiles(void) } } +void +checkdir(const char *path) +{ + struct stat st; + err_if (stat(path, &st) == -1); + if (S_ISDIR(st.st_mode)) + err(set_err(EISDIR), "%s", path); + if (errno == ENOTDIR) + errno = 0; + err_if(errno); +} + void xopen(int *f, const char *l, int p, struct stat *st) { -- cgit v1.2.1