diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-06-21 23:36:17 +0200 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-06-21 23:36:17 +0200 |
commit | 1db63fcedab0b288820d66e100b1877b1a5a8851 (patch) | |
tree | 5b299c261259759c057a7297da14d781b5a9759d | |
parent | c976a61f60e32be3391c759ef86a41db4bbd62b0 (diff) |
Fix fmdcmp()
-rw-r--r-- | cbs.h | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -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 |