]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - tools/regression/pjdfstest/tests/link/13.t
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / tools / regression / pjdfstest / tests / link / 13.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="link returns EPERM if the parent directory of the destination file has its immutable flag set"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 require chflags
10
11 case "${os}:${fs}" in
12 FreeBSD:ZFS)
13         echo "1..29"
14         ;;
15 FreeBSD:UFS)
16         echo "1..49"
17         ;;
18 *)
19         quick_exit
20 esac
21
22 n0=`namegen`
23 n1=`namegen`
24 n2=`namegen`
25
26 expect 0 mkdir ${n0} 0755
27
28 expect 0 create ${n0}/${n1} 0644
29 expect 1 stat ${n0}/${n1} nlink
30 expect 0 link ${n0}/${n1} ${n0}/${n2}
31 expect 2 stat ${n0}/${n1} nlink
32 expect 0 unlink ${n0}/${n2}
33 expect 1 stat ${n0}/${n1} nlink
34
35 expect 0 chflags ${n0} SF_IMMUTABLE
36 expect EPERM link ${n0}/${n1} ${n0}/${n2}
37 expect 1 stat ${n0}/${n1} nlink
38 expect 0 chflags ${n0} none
39 expect 0 link ${n0}/${n1} ${n0}/${n2}
40 expect 2 stat ${n0}/${n1} nlink
41 expect 0 unlink ${n0}/${n2}
42 expect 1 stat ${n0}/${n1} nlink
43
44 expect 0 chflags ${n0} SF_NOUNLINK
45 expect 0 link ${n0}/${n1} ${n0}/${n2}
46 expect 2 stat ${n0}/${n1} nlink
47 expect 0 chflags ${n0} none
48 expect 0 unlink ${n0}/${n2}
49 expect 1 stat ${n0}/${n1} nlink
50
51 expect 0 chflags ${n0} SF_APPEND
52 expect 0 link ${n0}/${n1} ${n0}/${n2}
53 expect 2 stat ${n0}/${n1} nlink
54 expect 0 chflags ${n0} none
55 expect 0 unlink ${n0}/${n2}
56 expect 1 stat ${n0}/${n1} nlink
57
58 case "${os}:${fs}" in
59 FreeBSD:UFS)
60         expect 0 chflags ${n0} UF_IMMUTABLE
61         expect EPERM link ${n0}/${n1} ${n0}/${n2}
62         expect 1 stat ${n0}/${n1} nlink
63         expect 0 chflags ${n0} none
64         expect 0 link ${n0}/${n1} ${n0}/${n2}
65         expect 2 stat ${n0}/${n1} nlink
66         expect 0 unlink ${n0}/${n2}
67         expect 1 stat ${n0}/${n1} nlink
68
69         expect 0 chflags ${n0} UF_NOUNLINK
70         expect 0 link ${n0}/${n1} ${n0}/${n2}
71         expect 2 stat ${n0}/${n1} nlink
72         expect 0 chflags ${n0} none
73         expect 0 unlink ${n0}/${n2}
74         expect 1 stat ${n0}/${n1} nlink
75
76         expect 0 chflags ${n0} UF_APPEND
77         expect 0 link ${n0}/${n1} ${n0}/${n2}
78         expect 2 stat ${n0}/${n1} nlink
79         expect 0 chflags ${n0} none
80         expect 0 unlink ${n0}/${n2}
81         expect 1 stat ${n0}/${n1} nlink
82         ;;
83 esac
84
85 expect 0 unlink ${n0}/${n1}
86 expect 0 rmdir ${n0}