#!/bin/sh # Test some of ls's sorting options. : ${LS=ls} : ${TOUCH=touch} test=time-1 if test "$VERBOSE" = yes; then set -x $LS --version fi tmp=t-ls.$$ # We're going to run LS from a subdir. # Prepend ../ if $LS is a relative file name. case $LS in /*) ;; */*) LS=../$LS esac case $TOUCH in /*) ;; */*) TOUCH=../$TOUCH esac test_failure=0 mkdir $tmp || test_failure=1 cd $tmp || test_failure=1 t1='1998-01-15 21:00' t2='1998-01-15 22:00' t3='1998-01-15 23:00' u1='1998-01-14 11:00' u2='1998-01-14 12:00' u3='1998-01-14 13:00' $TOUCH -m -d "$t3" a || test_failure=1 $TOUCH -m -d "$t2" b || test_failure=1 $TOUCH -m -d "$t1" c || test_failure=1 $TOUCH -a -d "$u3" c || test_failure=1 $TOUCH -a -d "$u2" b || test_failure=1 # Make sure A has ctime at least 1 second more recent than C's. sleep 2 $TOUCH -a -d "$u1" a || test_failure=1 fail=0 # A has ctime more recent than C. set `$LS -c a c` test "$*" = 'a c' || fail=1 # Sleep so long in an attempt to avoid spurious failures # due to NFS caching and/or clock skew. sleep 2 # Create a link, updating c's ctime. ln c d || test_failure=1 if test $test_failure = 1; then echo 'failure in testing framework' exit 1 fi set `$LS -u a b c` test "$*" = 'c b a' && : || fail=1 set `$LS -t a b c` test "$*" = 'a b c' && : || fail=1 # Now, C should have ctime more recent than A. set `$LS -c a c` if test "$*" = 'c a'; then : ok else # In spite of documentation, (e.g., stat(2)), neither link nor chmod # update a file's st_ctime on SunOS4.1.4. cat >&2 << \EOF failed ls ctime test -- this is expected at least for SunOS4.1.4 and for tmpfs file systems on Solaris 5.5.1. EOF fail=1 fi cd .. rm -rf $tmp exit $fail