1*3416500aSEnji Cooper#! /bin/sh 2*3416500aSEnji Cooper# vim: filetype=sh noexpandtab ts=8 sw=8 3*3416500aSEnji Cooper# $FreeBSD$ 4*3416500aSEnji Cooper 5*3416500aSEnji Cooperdesc="utimensat with UTIME_NOW will set the will set typestamps to now" 6*3416500aSEnji Cooper 7*3416500aSEnji Cooperdir=`dirname $0` 8*3416500aSEnji Cooper. ${dir}/../misc.sh 9*3416500aSEnji Cooper 10*3416500aSEnji Cooperrequire "utimensat" 11*3416500aSEnji Cooper 12*3416500aSEnji Cooperecho "1..7" 13*3416500aSEnji Cooper 14*3416500aSEnji Coopern0=`namegen` 15*3416500aSEnji Coopern1=`namegen` 16*3416500aSEnji CooperTIME_MARGIN=300 # Allow up to a 5 minute delta between the timestamps 17*3416500aSEnji Cooper 18*3416500aSEnji Cooperexpect 0 mkdir ${n1} 0755 19*3416500aSEnji Coopercdir=`pwd` 20*3416500aSEnji Coopercd ${n1} 21*3416500aSEnji Cooper 22*3416500aSEnji Cooper 23*3416500aSEnji Coopercreate_file regular ${n0} 24*3416500aSEnji Cooperold_mtime=`$fstest lstat ${n0} mtime` 25*3416500aSEnji Cooperold_atime=`$fstest lstat ${n0} atime` 26*3416500aSEnji Coopersleep 1 # Ensure that future timestamps will be different than this one 27*3416500aSEnji Cooper 28*3416500aSEnji Cooperexpect 0 open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_NOW 0 UTIME_NOW 0 29*3416500aSEnji Coopernew_mtime=`$fstest lstat ${n0} mtime` 30*3416500aSEnji Coopernew_atime=`$fstest lstat ${n0} atime` 31*3416500aSEnji Cooperdelta_mtime=$(( $new_mtime - $old_mtime )) 32*3416500aSEnji Cooperdelta_atime=$(( $new_atime - $old_atime )) 33*3416500aSEnji Cooper 34*3416500aSEnji Cooperif [ "$delta_mtime" -gt 0 ]; then 35*3416500aSEnji Cooper if [ "$delta_mtime" -lt $TIME_MARGIN ]; then 36*3416500aSEnji Cooper echo "ok 4" 37*3416500aSEnji Cooper else 38*3416500aSEnji Cooper echo "not ok 4 new mtime is implausibly far in the future" 39*3416500aSEnji Cooper fi 40*3416500aSEnji Cooperelse 41*3416500aSEnji Cooper echo "not ok 4 mtime was not updated" 42*3416500aSEnji Cooperfi 43*3416500aSEnji Cooperif [ "$delta_atime" -gt 0 ]; then 44*3416500aSEnji Cooper if [ "$delta_atime" -lt $TIME_MARGIN ]; then 45*3416500aSEnji Cooper echo "ok 5" 46*3416500aSEnji Cooper else 47*3416500aSEnji Cooper echo "not ok 5 new atime is implausibly far in the future" 48*3416500aSEnji Cooper fi 49*3416500aSEnji Cooperelse 50*3416500aSEnji Cooper echo "not ok 5 atime was not updated" 51*3416500aSEnji Cooperfi 52*3416500aSEnji Cooperntest=$((ntest+2)) 53*3416500aSEnji Cooperexpect 0 unlink ${n0} 54*3416500aSEnji Cooper 55*3416500aSEnji Coopercd ${cdir} 56*3416500aSEnji Cooperexpect 0 rmdir ${n1} 57