1271294Sngie#!/bin/sh
2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/09.t 211352 2010-08-15 21:24:17Z pjd $
3271294Sngie
4271294Sngiedesc="mknod 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:UFS)
13271294Sngie	echo "1..30"
14271294Sngie	;;
15271294Sngie*)
16271294Sngie	echo "1..17"
17271294Sngie	;;
18271294Sngieesac
19271294Sngie
20271294Sngien0=`namegen`
21271294Sngien1=`namegen`
22271294Sngie
23271294Sngieexpect 0 mkdir ${n0} 0755
24271294Sngie
25271294Sngieexpect 0 mknod ${n0}/${n1} f 0644 0 0
26271294Sngieexpect 0 unlink ${n0}/${n1}
27271294Sngie
28271294Sngieexpect 0 chflags ${n0} SF_IMMUTABLE
29271294Sngieexpect EPERM mknod ${n0}/${n1} f 0644 0 0
30271294Sngieexpect 0 chflags ${n0} none
31271294Sngieexpect 0 mknod ${n0}/${n1} f 0644 0 0
32271294Sngieexpect 0 unlink ${n0}/${n1}
33271294Sngie
34271294Sngieexpect 0 chflags ${n0} SF_APPEND
35271294Sngieexpect 0 mknod ${n0}/${n1} f 0644 0 0
36271294Sngieexpect 0 chflags ${n0} none
37271294Sngieexpect 0 unlink ${n0}/${n1}
38271294Sngie
39271294Sngieexpect 0 chflags ${n0} SF_NOUNLINK
40271294Sngieexpect 0 mknod ${n0}/${n1} f 0644 0 0
41271294Sngieexpect 0 unlink ${n0}/${n1}
42271294Sngieexpect 0 chflags ${n0} none
43271294Sngie
44271294Sngiecase "${os}:${fs}" in
45271294SngieFreeBSD:UFS)
46271294Sngie	expect 0 chflags ${n0} UF_IMMUTABLE
47271294Sngie	expect EPERM mknod ${n0}/${n1} f 0644 0 0
48271294Sngie	expect 0 chflags ${n0} none
49271294Sngie	expect 0 mknod ${n0}/${n1} f 0644 0 0
50271294Sngie	expect 0 unlink ${n0}/${n1}
51271294Sngie
52271294Sngie	expect 0 chflags ${n0} UF_APPEND
53271294Sngie	expect 0 mknod ${n0}/${n1} f 0644 0 0
54271294Sngie	expect 0 chflags ${n0} none
55271294Sngie	expect 0 unlink ${n0}/${n1}
56271294Sngie
57271294Sngie	expect 0 chflags ${n0} UF_NOUNLINK
58271294Sngie	expect 0 mknod ${n0}/${n1} f 0644 0 0
59271294Sngie	expect 0 unlink ${n0}/${n1}
60271294Sngie	expect 0 chflags ${n0} none
61271294Sngie	;;
62271294Sngieesac
63271294Sngie
64271294Sngieexpect 0 rmdir ${n0}
65