1219439Spjd#!/bin/sh 2219439Spjd# $FreeBSD: releng/10.2/tools/regression/pjdfstest/tests/ftruncate/00.t 219439 2011-03-09 23:11:30Z pjd $ 3219439Spjd 4219439Spjddesc="ftruncate descrease/increase file size" 5219439Spjd 6219439Spjddir=`dirname $0` 7219439Spjd. ${dir}/../misc.sh 8219439Spjd 9219439Spjdecho "1..21" 10219439Spjd 11219439Spjdn0=`namegen` 12219439Spjdn1=`namegen` 13219439Spjd 14219439Spjdexpect 0 mkdir ${n1} 0755 15219439Spjdcdir=`pwd` 16219439Spjdcd ${n1} 17219439Spjd 18219439Spjdexpect 0 create ${n0} 0644 19219439Spjdexpect 0 open ${n0} O_RDWR : ftruncate 0 1234567 20219439Spjdexpect 1234567 lstat ${n0} size 21219439Spjdexpect 0 open ${n0} O_WRONLY : ftruncate 0 567 22219439Spjdexpect 567 lstat ${n0} size 23219439Spjdexpect 0 unlink ${n0} 24219439Spjd 25219439Spjddd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1 26219439Spjdexpect 0 open ${n0} O_RDWR : ftruncate 0 23456 27219439Spjdexpect 23456 lstat ${n0} size 28219439Spjdexpect 0 open ${n0} O_WRONLY : ftruncate 0 1 29219439Spjdexpect 1 lstat ${n0} size 30219439Spjdexpect 0 unlink ${n0} 31219439Spjd 32219439Spjd# successful ftruncate(2) updates ctime. 33219439Spjdexpect 0 create ${n0} 0644 34219439Spjdctime1=`${fstest} stat ${n0} ctime` 35219439Spjdsleep 1 36219439Spjdexpect 0 open ${n0} O_RDWR : ftruncate 0 123 37219439Spjdctime2=`${fstest} stat ${n0} ctime` 38219439Spjdtest_check $ctime1 -lt $ctime2 39219439Spjdexpect 0 unlink ${n0} 40219439Spjd 41219439Spjd# unsuccessful ftruncate(2) does not update ctime. 42219439Spjdexpect 0 create ${n0} 0644 43219439Spjdctime1=`${fstest} stat ${n0} ctime` 44219439Spjdsleep 1 45219439Spjdexpect EINVAL -u 65534 open ${n0} O_RDONLY : ftruncate 0 123 46219439Spjdctime2=`${fstest} stat ${n0} ctime` 47219439Spjdtest_check $ctime1 -eq $ctime2 48219439Spjdexpect 0 unlink ${n0} 49219439Spjd 50219439Spjd# third argument should not affect permission. 51219439Spjdexpect 0 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0 52219439Spjdexpect 0 unlink ${n0} 53219439Spjdexpect 0 chmod . 0777 54219439Spjdexpect 0 -u 65534 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0 55219439Spjdexpect 0 unlink ${n0} 56219439Spjd 57219439Spjdcd ${cdir} 58219439Spjdexpect 0 rmdir ${n1} 59