xref: /freebsd/contrib/pjdfstest/tests/utimensat/01.t (revision 531c2d7af3cd2e64eec94aa1b19c4b2f16fce515)
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