1271294Sngie#!/bin/sh
2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/ftruncate/00.t 219439 2011-03-09 23:11:30Z pjd $
3271294Sngie
4271294Sngiedesc="ftruncate descrease/increase file size"
5271294Sngie
6271294Sngiedir=`dirname $0`
7271294Sngie. ${dir}/../misc.sh
8271294Sngie
9275504Sngieecho "1..26"
10271294Sngie
11271294Sngien0=`namegen`
12271294Sngien1=`namegen`
13271294Sngie
14271294Sngieexpect 0 mkdir ${n1} 0755
15271294Sngiecdir=`pwd`
16271294Sngiecd ${n1}
17271294Sngie
18271294Sngieexpect 0 create ${n0} 0644
19271294Sngieexpect 0 open ${n0} O_RDWR : ftruncate 0 1234567
20271294Sngieexpect 1234567 lstat ${n0} size
21271294Sngieexpect 0 open ${n0} O_WRONLY : ftruncate 0 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 open ${n0} O_RDWR : ftruncate 0 23456
27271294Sngieexpect 23456 lstat ${n0} size
28271294Sngieexpect 0 open ${n0} O_WRONLY : ftruncate 0 1
29271294Sngieexpect 1 lstat ${n0} size
30271294Sngieexpect 0 unlink ${n0}
31271294Sngie
32271294Sngie# successful ftruncate(2) updates ctime.
33271294Sngieexpect 0 create ${n0} 0644
34271294Sngiectime1=`${fstest} stat ${n0} ctime`
35271294Sngiesleep 1
36271294Sngieexpect 0 open ${n0} O_RDWR : ftruncate 0 123
37271294Sngiectime2=`${fstest} stat ${n0} ctime`
38271294Sngietest_check $ctime1 -lt $ctime2
39271294Sngieexpect 0 unlink ${n0}
40271294Sngie
41271294Sngie# unsuccessful ftruncate(2) does not update ctime.
42271294Sngieexpect 0 create ${n0} 0644
43271294Sngiectime1=`${fstest} stat ${n0} ctime`
44271294Sngiesleep 1
45271294Sngieexpect EINVAL -u 65534 open ${n0} O_RDONLY : ftruncate 0 123
46271294Sngiectime2=`${fstest} stat ${n0} ctime`
47271294Sngietest_check $ctime1 -eq $ctime2
48271294Sngieexpect 0 unlink ${n0}
49271294Sngie
50271294Sngie# third argument should not affect permission.
51271294Sngieexpect 0 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0
52271294Sngieexpect 0 unlink ${n0}
53271294Sngieexpect 0 chmod . 0777
54271294Sngieexpect 0 -u 65534 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0
55271294Sngieexpect 0 unlink ${n0}
56271294Sngie
57271294Sngiecd ${cdir}
58271294Sngieexpect 0 rmdir ${n1}
59