From 1db63fcedab0b288820d66e100b1877b1a5a8851 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Fri, 21 Jun 2024 23:36:17 +0200 Subject: Fix fmdcmp() --- cbs.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cbs.h b/cbs.h index 266b949..9220ed1 100644 --- a/cbs.h +++ b/cbs.h @@ -210,10 +210,21 @@ fexists(const char *f) int fmdcmp(const char *lhs, const char *rhs) { + int errnol, errnor; struct stat sbl, sbr; - assert(stat(lhs, &sbl) != -1); - assert(stat(rhs, &sbr) != -1); + stat(lhs, &sbl); errnol = errno; + stat(rhs, &sbr); errnor = errno; + + assert(errnol == 0 || errnol == ENOENT); + assert(errnor == 0 || errnor == ENOENT); + + if (errnol == ENOENT && errnor == ENOENT) + return 0; + if (errnol == ENOENT) + return -1; + if (errnor == ENOENT) + return +1; return sbl.st_mtim.tv_sec == sbr.st_mtim.tv_sec ? sbl.st_mtim.tv_nsec - sbr.st_mtim.tv_nsec -- cgit v1.2.3