1166065Spjd#!/bin/sh
2166065Spjd# $FreeBSD: releng/10.2/tools/regression/pjdfstest/tests/open/10.t 210984 2010-08-06 23:58:54Z pjd $
3166065Spjd
4166065Spjddesc="open returns EPERM when the named file has its immutable flag set and the file is to be modified"
5166065Spjd
6166065Spjddir=`dirname $0`
7166065Spjd. ${dir}/../misc.sh
8166065Spjd
9166065Spjdrequire chflags
10166065Spjd
11210984Spjdcase "${os}:${fs}" in
12210984SpjdFreeBSD:ZFS)
13210984Spjd	echo "1..14"
14210984Spjd	;;
15210984SpjdFreeBSD:UFS)
16210984Spjd	echo "1..28"
17210984Spjd	;;
18210984Spjd*)
19210984Spjd	quick_exit
20210984Spjdesac
21166065Spjd
22166065Spjdn0=`namegen`
23166065Spjd
24166065Spjdexpect 0 create ${n0} 0644
25166065Spjdexpect 0 chflags ${n0} SF_IMMUTABLE
26166065Spjdexpect EPERM open ${n0} O_WRONLY
27166065Spjdexpect EPERM open ${n0} O_RDWR
28166065Spjdexpect EPERM open ${n0} O_RDONLY,O_TRUNC
29166065Spjdexpect 0 chflags ${n0} none
30166065Spjdexpect 0 unlink ${n0}
31166065Spjd
32166065Spjdexpect 0 create ${n0} 0644
33166065Spjdexpect 0 chflags ${n0} SF_NOUNLINK
34166065Spjdexpect 0 open ${n0} O_WRONLY
35166065Spjdexpect 0 open ${n0} O_RDWR
36166065Spjdexpect 0 open ${n0} O_RDONLY,O_TRUNC
37166065Spjdexpect 0 chflags ${n0} none
38166065Spjdexpect 0 unlink ${n0}
39166065Spjd
40210984Spjdcase "${os}:${fs}" in
41210984SpjdFreeBSD:UFS)
42210984Spjd	expect 0 create ${n0} 0644
43210984Spjd	expect 0 chflags ${n0} UF_IMMUTABLE
44210984Spjd	expect EPERM open ${n0} O_WRONLY
45210984Spjd	expect EPERM open ${n0} O_RDWR
46210984Spjd	expect EPERM open ${n0} O_RDONLY,O_TRUNC
47210984Spjd	expect 0 chflags ${n0} none
48210984Spjd	expect 0 unlink ${n0}
49210984Spjd
50210984Spjd	expect 0 create ${n0} 0644
51210984Spjd	expect 0 chflags ${n0} UF_NOUNLINK
52210984Spjd	expect 0 open ${n0} O_WRONLY
53210984Spjd	expect 0 open ${n0} O_RDWR
54210984Spjd	expect 0 open ${n0} O_RDONLY,O_TRUNC
55210984Spjd	expect 0 chflags ${n0} none
56210984Spjd	expect 0 unlink ${n0}
57210984Spjd	;;
58210984Spjdesac
59