From b6a2bd4ac00f3a2f899305b256be746dca757229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 30 Jul 2019 15:33:20 +0100 Subject: [PATCH] nss: remove use for virDir helper APIs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use the plain libc APIs to avoid a dependancy on the main libvirt code from the nss module. Reviewed-by: Michal Privoznik Signed-off-by: Daniel P. Berrangé --- cfg.mk | 2 +- tools/nss/libvirt_nss.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/cfg.mk b/cfg.mk index ec09550b49..f2b326ec94 100644 --- a/cfg.mk +++ b/cfg.mk @@ -1338,7 +1338,7 @@ exclude_file_name_regexp--sc_prohibit_always-defined_macros = \ ^tests/virtestmock.c$$ exclude_file_name_regexp--sc_prohibit_readdir = \ - ^tests/(.*mock|virfilewrapper)\.c$$ + ^(tests/(.*mock|virfilewrapper)\.c|tools/nss/libvirt_nss\.c)$$ exclude_file_name_regexp--sc_prohibit_cross_inclusion = \ ^(src/util/virclosecallbacks\.h|src/util/virhostdev\.h)$$ diff --git a/tools/nss/libvirt_nss.c b/tools/nss/libvirt_nss.c index 519046a4e0..f50dec48ba 100644 --- a/tools/nss/libvirt_nss.c +++ b/tools/nss/libvirt_nss.c @@ -281,7 +281,8 @@ findLease(const char *name, goto cleanup; } - if (virDirOpenQuiet(&dir, leaseDir) < 0) { + dir = opendir(leaseDir); + if (!dir) { ERROR("Failed to open dir '%s'", leaseDir); goto cleanup; } @@ -292,7 +293,7 @@ findLease(const char *name, } DEBUG("Dir: %s", leaseDir); - while ((ret = virDirRead(dir, &entry, leaseDir)) > 0) { + while ((entry = readdir(dir)) != NULL) { char *path; if (virStringHasSuffix(entry->d_name, ".status")) { @@ -324,8 +325,11 @@ findLease(const char *name, nMacmaps++; VIR_FREE(path); } + + errno = 0; } - VIR_DIR_CLOSE(dir); + closedir(dir); + dir = NULL; nleases = virJSONValueArraySize(leases_array); DEBUG("Read %zd leases", nleases); @@ -363,7 +367,8 @@ findLease(const char *name, cleanup: *errnop = errno; - VIR_DIR_CLOSE(dir); + if (dir) + closedir(dir); while (nMacmaps) virObjectUnref(macmaps[--nMacmaps]); return ret;