1166065Spjd#!/bin/sh
2166065Spjd# $FreeBSD: releng/10.2/tools/regression/pjdfstest/tests/truncate/00.t 166065 2007-01-17 01:42:12Z pjd $
3166065Spjd
4166065Spjddesc="truncate descrease/increase file size"
5166065Spjd
6166065Spjddir=`dirname $0`
7166065Spjd. ${dir}/../misc.sh
8166065Spjd
9166065Spjdecho "1..21"
10166065Spjd
11166065Spjdn0=`namegen`
12166065Spjdn1=`namegen`
13166065Spjd
14166065Spjdexpect 0 mkdir ${n1} 0755
15166065Spjdcdir=`pwd`
16166065Spjdcd ${n1}
17166065Spjd
18166065Spjdexpect 0 create ${n0} 0644
19166065Spjdexpect 0 truncate ${n0} 1234567
20166065Spjdexpect 1234567 lstat ${n0} size
21166065Spjdexpect 0 truncate ${n0} 567
22166065Spjdexpect 567 lstat ${n0} size
23166065Spjdexpect 0 unlink ${n0}
24166065Spjd
25166065Spjddd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1
26166065Spjdexpect 0 truncate ${n0} 23456
27166065Spjdexpect 23456 lstat ${n0} size
28166065Spjdexpect 0 truncate ${n0} 1
29166065Spjdexpect 1 lstat ${n0} size
30166065Spjdexpect 0 unlink ${n0}
31166065Spjd
32166065Spjd# successful truncate(2) updates ctime.
33166065Spjdexpect 0 create ${n0} 0644
34166065Spjdctime1=`${fstest} stat ${n0} ctime`
35166065Spjdsleep 1
36166065Spjdexpect 0 truncate ${n0} 123
37166065Spjdctime2=`${fstest} stat ${n0} ctime`
38166065Spjdtest_check $ctime1 -lt $ctime2
39166065Spjdexpect 0 unlink ${n0}
40166065Spjd
41166065Spjd# unsuccessful truncate(2) does not update ctime.
42166065Spjdexpect 0 create ${n0} 0644
43166065Spjdctime1=`${fstest} stat ${n0} ctime`
44166065Spjdsleep 1
45166065Spjdexpect EACCES -u 65534 truncate ${n0} 123
46166065Spjdctime2=`${fstest} stat ${n0} ctime`
47166065Spjdtest_check $ctime1 -eq $ctime2
48166065Spjdexpect 0 unlink ${n0}
49166065Spjd
50166065Spjdcd ${cdir}
51166065Spjdexpect 0 rmdir ${n1}
52