# HG changeset patch # User Paul Eggert # Date 1291267556 28800 # Node ID cc15a32c0446f39489fd02187df1f9b870ad6bf5 # Parent 4354812074756c72b813c5f5422520176325f374 utimecmp: fine-grained src to nearby coarse-grained dest * lib/utimecmp.c (utimecmp): When UTIMECMP_TRUNCATE_SOURCE is set, and the source is on a file system with higher-resolution time stamps, than the destination, and _PC_TIMESTAMP_RESOLUTION does not work, and the time stamps are close together, the algorithm to determine the exact resolution from the read-back mtime was buggy: it had a "!=" where it should have had an "==". This bug has been in the code ever since it was introduced to gnulib. Problem reported by Dan Jacobson in . diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2010-12-01 Paul Eggert + + utimecmp: fine-grained src to nearby coarse-grained dest + + * lib/utimecmp.c (utimecmp): When UTIMECMP_TRUNCATE_SOURCE is set, + and the source is on a file system with higher-resolution time + stamps, than the destination, and _PC_TIMESTAMP_RESOLUTION does + not work, and the time stamps are close together, the algorithm to + determine the exact resolution from the read-back mtime was buggy: + it had a "!=" where it should have had an "==". This bug has been + in the code ever since it was introduced to gnulib. + Problem reported by Dan Jacobson in + . + 2010-11-30 Bruno Haible strerror_r-posix: Fix autoconf test. diff --git a/lib/utimecmp.c b/lib/utimecmp.c --- a/lib/utimecmp.c +++ b/lib/utimecmp.c @@ -325,7 +325,7 @@ res = SYSCALL_RESOLUTION; - for (a /= res; a % 10 != 0; a /= 10) + for (a /= res; a % 10 == 0; a /= 10) { if (res == BILLION) {