1166065Spjd#!/bin/sh
2166065Spjd# $FreeBSD: releng/10.2/tools/regression/pjdfstest/tests/mkfifo/10.t 210984 2010-08-06 23:58:54Z pjd $
3166065Spjd
4166065Spjddesc="mkfifo returns EPERM if the parent directory of the file to be created has its immutable flag set"
5166065Spjd
6166065Spjddir=`dirname $0`
7166065Spjd. ${dir}/../misc.sh
8166065Spjd
9166065Spjdrequire chflags
10166065Spjd
11210984Spjdcase "${os}:${fs}" in
12210984SpjdFreeBSD:ZFS)
13210984Spjd	echo "1..17"
14210984Spjd	;;
15210984SpjdFreeBSD:UFS)
16210984Spjd	echo "1..30"
17210984Spjd	;;
18210984Spjd*)
19210984Spjd	quick_exit
20210984Spjdesac
21166065Spjd
22166065Spjdn0=`namegen`
23166065Spjdn1=`namegen`
24166065Spjd
25166065Spjdexpect 0 mkdir ${n0} 0755
26166065Spjd
27166065Spjdexpect 0 mkfifo ${n0}/${n1} 0644
28166065Spjdexpect 0 unlink ${n0}/${n1}
29166065Spjd
30166065Spjdexpect 0 chflags ${n0} SF_IMMUTABLE
31166065Spjdexpect EPERM mkfifo ${n0}/${n1} 0644
32166065Spjdexpect 0 chflags ${n0} none
33166065Spjdexpect 0 mkfifo ${n0}/${n1} 0644
34166065Spjdexpect 0 unlink ${n0}/${n1}
35166065Spjd
36210984Spjdexpect 0 chflags ${n0} SF_NOUNLINK
37166065Spjdexpect 0 mkfifo ${n0}/${n1} 0644
38166065Spjdexpect 0 unlink ${n0}/${n1}
39210984Spjdexpect 0 chflags ${n0} none
40166065Spjd
41166065Spjdexpect 0 chflags ${n0} SF_APPEND
42166065Spjdexpect 0 mkfifo ${n0}/${n1} 0644
43166065Spjdexpect 0 chflags ${n0} none
44166065Spjdexpect 0 unlink ${n0}/${n1}
45166065Spjd
46210984Spjdcase "${os}:${fs}" in
47210984SpjdFreeBSD:UFS)
48210984Spjd	expect 0 chflags ${n0} UF_IMMUTABLE
49210984Spjd	expect EPERM mkfifo ${n0}/${n1} 0644
50210984Spjd	expect 0 chflags ${n0} none
51210984Spjd	expect 0 mkfifo ${n0}/${n1} 0644
52210984Spjd	expect 0 unlink ${n0}/${n1}
53166065Spjd
54210984Spjd	expect 0 chflags ${n0} UF_NOUNLINK
55210984Spjd	expect 0 mkfifo ${n0}/${n1} 0644
56210984Spjd	expect 0 unlink ${n0}/${n1}
57210984Spjd	expect 0 chflags ${n0} none
58166065Spjd
59210984Spjd	expect 0 chflags ${n0} UF_APPEND
60210984Spjd	expect 0 mkfifo ${n0}/${n1} 0644
61210984Spjd	expect 0 chflags ${n0} none
62210984Spjd	expect 0 unlink ${n0}/${n1}
63210984Spjd	;;
64210984Spjdesac
65166065Spjd
66166065Spjdexpect 0 rmdir ${n0}
67