On Tue, 25 Jul 2006 08:31:44 +0200 Roland Mainz wrote:
> I found another issue in the Solaris bug database which may (or may not)
> affect ksh93.
> Sun-Bug #6417347
> (http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6417347)
> describes a problem with the "test" builtin in various shells (including
> Solaris ksh) which causes problems with the -nt/-ot operators vs. inode
> timestame accuracy.
> >From the bug's description:
> -- snip --
> solaris file timestamps are of better-than sub-second resolution; these
> higher-resolution timestamps can be displayed with ls -E, but they are
> not included in the comparisons done by test's -nt and -ot operators.

> Filing as defect rather than RFE because the documentation for "test"
> makes no reference to any limited resolution of the timestamp but merely
> refers to whether the file is older or newer.

> this appears to be common across multiple shells (ksh, zsh, bash,
> /bin/test); I'm filing against ksh first to raise awareness of this.

> as systems speed up, the chance that scripts using -nt and -ot  will
> break due to same-second timestamps increases.
> -- snip --

> The question is: What is the correct behaviour in this case ? And how
> does ksh93r+ currently behave ?

hi resolution timestamps if the system supports them

if you have the ast touch:

        touch -t 2006-01-20+13:08:27.604848000 a
        touch -t 2006-01-20+13:08:27.604849000 b
        for sh in ksh sh bash zsh
        do      $sh -c "test a -ot b && echo $sh: high resolution"
        done

ksh93 (and ast nmake ls touch etc.) use the <tmx.h> api that converts
hi res time to unsigned 64 bit Time_t nanoseconds since the epoch

note: try this on linux and the hi res part may go to 0 once the
inode is flushed

-- Glenn Fowler -- AT&T Research, Florham Park NJ --


Reply via email to