1#!/bin/sh
2# $FreeBSD: src/tools/regression/fstest/tests/truncate/00.t,v 1.1 2007/01/17 01:42:12 pjd Exp $
3
4desc="truncate descrease/increase file size"
5
6n0=`namegen`
7n1=`namegen`
8
9expect 0 mkdir ${n1} 0755
10cdir=`pwd`
11cd ${n1}
12
13expect 0 create ${n0} 0644
14expect 0 truncate ${n0} 1234567
15expect 1234567 lstat ${n0} size
16expect 0 truncate ${n0} 567
17expect 567 lstat ${n0} size
18expect 0 unlink ${n0}
19
20dd if=/dev/random of=${n0} bs=12345 count=1 status=none
21expect 0 truncate ${n0} 23456
22expect 23456 lstat ${n0} size
23expect 0 truncate ${n0} 1
24expect 1 lstat ${n0} size
25expect 0 unlink ${n0}
26
27# successful truncate(2) updates ctime.
28expect 0 create ${n0} 0644
29ctime1=`${FSTEST} stat ${n0} ctime`
30sleep 1
31expect 0 truncate ${n0} 123
32ctime2=`${FSTEST} stat ${n0} ctime`
33test_check $ctime1 -lt $ctime2
34expect 0 unlink ${n0}
35
36# unsuccessful truncate(2) does not update ctime.
37expect 0 create ${n0} 0644
38ctime1=`${FSTEST} stat ${n0} ctime`
39sleep 1
40expect EACCES -u 65534 truncate ${n0} 123
41ctime2=`${FSTEST} stat ${n0} ctime`
42test_check $ctime1 -eq $ctime2
43expect 0 unlink ${n0}
44
45cd ${cdir}
46expect 0 rmdir ${n1}
47