From 4630d99a60f87144ecd9cb392c407a316f2da30f Mon Sep 17 00:00:00 2001 From: Cameron Katri Date: Wed, 25 May 2022 19:08:06 -0400 Subject: nftw behaves differently on Apple systems --- cache_from_tree.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'cache_from_tree.c') diff --git a/cache_from_tree.c b/cache_from_tree.c index 1f45e2a..610653c 100644 --- a/cache_from_tree.c +++ b/cache_from_tree.c @@ -26,6 +26,7 @@ */ #define _XOPEN_SOURCE 500 +#include #include #include #include @@ -77,10 +78,17 @@ cache_from_tree(const char *path, uint32_t version) ret.version = version; if (nftw(path, tccallback, 20, 0) == -1) { + // on macOS, nftw(3) will fail if the path is not a directory, but we don't want that + if (errno == ENOTDIR) { + struct stat sb; + if (stat(path, &sb) == 0 && tccallback(path, &sb, 0, NULL) == 0) + goto done; + } perror("nftw"); return ret; } +done: ret.num_entries = cache.num_entries; ret.hashes = cache.hashes; return ret; -- cgit v1.2.3