On 7/9/19 6:16 AM, k...@plushkava.net wrote: >> Did you have a look at the 'conditional.sh' script too? Looks like the '-N' >> switch compares only the integer part of the timestamp seconds. > > The stat structure supports timestamp fields of nanosecond granularity since > POSIX.1-2008, so it should work. I tried a simple test case here, and the > behaviour of -N seems generally broken: > > # f=$(mktemp); [[ -N $f ]]; echo $?; touch -m "$f"; [[ -N $f ]]; echo $? > 0 > 0 > > I expected the value of $? to be non-zero at first, followed by 0 after > updating the mtime.
The code just returns (atime <= mtime), and has since 1997. It uses the st_atime and st_mtime fields. I should update it to use timespecs if they're available, and (mtime > atime) might work closer to your expectations. After the call to mktemp, the atime and mtime are the same, so the test returns true. Using the test command that ships with GNU coreutils (v8.31) exhibits the same problem: > > # f=$(mktemp); command test -N "$f"; echo $?; touch -m "$f"; command test -N > "$f"; echo $? > 0 > 0 It might, but that's not what you tested. This runs the builtin test. -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/