1271294Sngie#!/bin/sh
2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/00.t 211352 2010-08-15 21:24:17Z pjd $
3271294Sngie
4271294Sngiedesc="truncate descrease/increase file size"
5271294Sngie
6271294Sngiedir=`dirname $0`
7271294Sngie. ${dir}/../misc.sh
8271294Sngie
9271294Sngieecho "1..21"
10271294Sngie
11271294Sngien0=`namegen`
12271294Sngien1=`namegen`
13271294Sngie
14271294Sngieexpect 0 mkdir ${n1} 0755
15271294Sngiecdir=`pwd`
16271294Sngiecd ${n1}
17271294Sngie
18271294Sngieexpect 0 create ${n0} 0644
19271294Sngieexpect 0 truncate ${n0} 1234567
20271294Sngieexpect 1234567 lstat ${n0} size
21271294Sngieexpect 0 truncate ${n0} 567
22271294Sngieexpect 567 lstat ${n0} size
23271294Sngieexpect 0 unlink ${n0}
24271294Sngie
25271294Sngiedd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1
26271294Sngieexpect 0 truncate ${n0} 23456
27271294Sngieexpect 23456 lstat ${n0} size
28271294Sngieexpect 0 truncate ${n0} 1
29271294Sngieexpect 1 lstat ${n0} size
30271294Sngieexpect 0 unlink ${n0}
31271294Sngie
32271294Sngie# successful truncate(2) updates ctime.
33271294Sngieexpect 0 create ${n0} 0644
34271294Sngiectime1=`${fstest} stat ${n0} ctime`
35271294Sngiesleep 1
36271294Sngieexpect 0 truncate ${n0} 123
37271294Sngiectime2=`${fstest} stat ${n0} ctime`
38271294Sngietest_check $ctime1 -lt $ctime2
39271294Sngieexpect 0 unlink ${n0}
40271294Sngie
41271294Sngie# unsuccessful truncate(2) does not update ctime.
42271294Sngieexpect 0 create ${n0} 0644
43271294Sngiectime1=`${fstest} stat ${n0} ctime`
44271294Sngiesleep 1
45271294Sngieexpect EACCES -u 65534 truncate ${n0} 123
46271294Sngiectime2=`${fstest} stat ${n0} ctime`
47271294Sngietest_check $ctime1 -eq $ctime2
48271294Sngieexpect 0 unlink ${n0}
49271294Sngie
50271294Sngiecd ${cdir}
51271294Sngieexpect 0 rmdir ${n1}
52