]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - tools/regression/pjdfstest/tests/ftruncate/00.t
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / tools / regression / pjdfstest / tests / ftruncate / 00.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="ftruncate descrease/increase file size"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 echo "1..21"
10
11 n0=`namegen`
12 n1=`namegen`
13
14 expect 0 mkdir ${n1} 0755
15 cdir=`pwd`
16 cd ${n1}
17
18 expect 0 create ${n0} 0644
19 expect 0 open ${n0} O_RDWR : ftruncate 0 1234567
20 expect 1234567 lstat ${n0} size
21 expect 0 open ${n0} O_WRONLY : ftruncate 0 567
22 expect 567 lstat ${n0} size
23 expect 0 unlink ${n0}
24
25 dd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1
26 expect 0 open ${n0} O_RDWR : ftruncate 0 23456
27 expect 23456 lstat ${n0} size
28 expect 0 open ${n0} O_WRONLY : ftruncate 0 1
29 expect 1 lstat ${n0} size
30 expect 0 unlink ${n0}
31
32 # successful ftruncate(2) updates ctime.
33 expect 0 create ${n0} 0644
34 ctime1=`${fstest} stat ${n0} ctime`
35 sleep 1
36 expect 0 open ${n0} O_RDWR : ftruncate 0 123
37 ctime2=`${fstest} stat ${n0} ctime`
38 test_check $ctime1 -lt $ctime2
39 expect 0 unlink ${n0}
40
41 # unsuccessful ftruncate(2) does not update ctime.
42 expect 0 create ${n0} 0644
43 ctime1=`${fstest} stat ${n0} ctime`
44 sleep 1
45 expect EINVAL -u 65534 open ${n0} O_RDONLY : ftruncate 0 123
46 ctime2=`${fstest} stat ${n0} ctime`
47 test_check $ctime1 -eq $ctime2
48 expect 0 unlink ${n0}
49
50 # third argument should not affect permission.
51 expect 0 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0
52 expect 0 unlink ${n0}
53 expect 0 chmod . 0777
54 expect 0 -u 65534 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0
55 expect 0 unlink ${n0}
56
57 cd ${cdir}
58 expect 0 rmdir ${n1}