1271294Sngie#!/bin/sh
2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/10.t 211352 2010-08-15 21:24:17Z pjd $
3271294Sngie
4271294Sngiedesc="mkfifo returns EPERM if the parent directory of the file to be created has its immutable flag set"
5271294Sngie
6271294Sngiedir=`dirname $0`
7271294Sngie. ${dir}/../misc.sh
8271294Sngie
9271294Sngierequire chflags
10271294Sngie
11271294Sngiecase "${os}:${fs}" in
12271294SngieFreeBSD:ZFS)
13271294Sngie	echo "1..17"
14271294Sngie	;;
15271294SngieFreeBSD:UFS)
16271294Sngie	echo "1..30"
17271294Sngie	;;
18271294Sngie*)
19271294Sngie	quick_exit
20271294Sngieesac
21271294Sngie
22271294Sngien0=`namegen`
23271294Sngien1=`namegen`
24271294Sngie
25271294Sngieexpect 0 mkdir ${n0} 0755
26271294Sngie
27271294Sngieexpect 0 mkfifo ${n0}/${n1} 0644
28271294Sngieexpect 0 unlink ${n0}/${n1}
29271294Sngie
30271294Sngieexpect 0 chflags ${n0} SF_IMMUTABLE
31271294Sngieexpect EPERM mkfifo ${n0}/${n1} 0644
32271294Sngieexpect 0 chflags ${n0} none
33271294Sngieexpect 0 mkfifo ${n0}/${n1} 0644
34271294Sngieexpect 0 unlink ${n0}/${n1}
35271294Sngie
36271294Sngieexpect 0 chflags ${n0} SF_NOUNLINK
37271294Sngieexpect 0 mkfifo ${n0}/${n1} 0644
38271294Sngieexpect 0 unlink ${n0}/${n1}
39271294Sngieexpect 0 chflags ${n0} none
40271294Sngie
41271294Sngieexpect 0 chflags ${n0} SF_APPEND
42271294Sngieexpect 0 mkfifo ${n0}/${n1} 0644
43271294Sngieexpect 0 chflags ${n0} none
44271294Sngieexpect 0 unlink ${n0}/${n1}
45271294Sngie
46271294Sngiecase "${os}:${fs}" in
47271294SngieFreeBSD:UFS)
48271294Sngie	expect 0 chflags ${n0} UF_IMMUTABLE
49271294Sngie	expect EPERM mkfifo ${n0}/${n1} 0644
50271294Sngie	expect 0 chflags ${n0} none
51271294Sngie	expect 0 mkfifo ${n0}/${n1} 0644
52271294Sngie	expect 0 unlink ${n0}/${n1}
53271294Sngie
54271294Sngie	expect 0 chflags ${n0} UF_NOUNLINK
55271294Sngie	expect 0 mkfifo ${n0}/${n1} 0644
56271294Sngie	expect 0 unlink ${n0}/${n1}
57271294Sngie	expect 0 chflags ${n0} none
58271294Sngie
59271294Sngie	expect 0 chflags ${n0} UF_APPEND
60271294Sngie	expect 0 mkfifo ${n0}/${n1} 0644
61271294Sngie	expect 0 chflags ${n0} none
62271294Sngie	expect 0 unlink ${n0}/${n1}
63271294Sngie	;;
64271294Sngieesac
65271294Sngie
66271294Sngieexpect 0 rmdir ${n0}
67