From b130283df8b8597f0ee4e31eb17b4e5d82f12256 Mon Sep 17 00:00:00 2001 From: relan Date: Sat, 24 Dec 2016 11:10:10 +0300 Subject: [PATCH] Generic I/O for directories: do not update times. --- libexfat/io.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libexfat/io.c b/libexfat/io.c index d0594be..7d80822 100644 --- a/libexfat/io.c +++ b/libexfat/io.c @@ -316,7 +316,7 @@ ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node, remainder -= lsize; cluster = exfat_next_cluster(ef, node, cluster); } - if (!ef->ro && !ef->noatime) + if (!(node->attrib & EXFAT_ATTRIB_DIR) && !ef->ro && !ef->noatime) exfat_update_atime(node); return MIN(size, node->size - offset) - remainder; } @@ -372,6 +372,9 @@ ssize_t exfat_generic_pwrite(struct exfat* ef, struct exfat_node* node, remainder -= lsize; cluster = exfat_next_cluster(ef, node, cluster); } - exfat_update_mtime(node); + if (!(node->attrib & EXFAT_ATTRIB_DIR)) + /* directory's mtime should be updated by the caller only when it + creates or removes something in this directory */ + exfat_update_mtime(node); return size - remainder; } -- 2.11.0