Deleted Added
full compact
08.t (210984) 08.t (211186)
1#!/bin/sh
1#!/bin/sh
2# $FreeBSD: head/tools/regression/fstest/tests/rename/08.t 210984 2010-08-06 23:58:54Z pjd $
2# $FreeBSD: head/tools/regression/fstest/tests/rename/08.t 211186 2010-08-11 17:34:58Z pjd $
3
4desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set"
5
6dir=`dirname $0`
7. ${dir}/../misc.sh
8
9require chflags
10
11case "${os}:${fs}" in
12FreeBSD:ZFS)
13 flags1="SF_IMMUTABLE"
14 flags2="SF_NOUNLINK SF_APPEND"
3
4desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set"
5
6dir=`dirname $0`
7. ${dir}/../misc.sh
8
9require chflags
10
11case "${os}:${fs}" in
12FreeBSD:ZFS)
13 flags1="SF_IMMUTABLE"
14 flags2="SF_NOUNLINK SF_APPEND"
15 echo "1..110"
15 echo "1..128"
16 ;;
17FreeBSD:UFS)
18 flags1="SF_IMMUTABLE UF_IMMUTABLE"
19 flags2="SF_NOUNLINK SF_APPEND UF_NOUNLINK UF_APPEND"
16 ;;
17FreeBSD:UFS)
18 flags1="SF_IMMUTABLE UF_IMMUTABLE"
19 flags2="SF_NOUNLINK SF_APPEND UF_NOUNLINK UF_APPEND"
20 echo "1..188"
20 echo "1..219"
21 ;;
22*)
23 quick_exit
24esac
25
26n0=`namegen`
27n1=`namegen`
28n2=`namegen`
29
30expect 0 mkdir ${n0} 0755
31
21 ;;
22*)
23 quick_exit
24esac
25
26n0=`namegen`
27n1=`namegen`
28n2=`namegen`
29
30expect 0 mkdir ${n0} 0755
31
32expect 0 create ${n1} 0644
33for flag in ${flags1}; do
34 expect 0 chflags ${n0} ${flag}
35 expect ${flag} stat ${n0} flags
36 expect EPERM rename ${n1} ${n0}/${n2}
37done
38expect 0 chflags ${n0} none
39expect 0 unlink ${n1}
40
41expect 0 mkdir ${n1} 0755
42for flag in ${flags1}; do
43 expect 0 chflags ${n0} ${flag}
44 expect ${flag} stat ${n0} flags
45 expect EPERM rename ${n1} ${n0}/${n2}
46done
47expect 0 chflags ${n0} none
48expect 0 rmdir ${n1}
49
50expect 0 mkfifo ${n1} 0644
51for flag in ${flags1}; do
52 expect 0 chflags ${n0} ${flag}
53 expect ${flag} stat ${n0} flags
54 expect EPERM rename ${n1} ${n0}/${n2}
55done
56expect 0 chflags ${n0} none
57expect 0 unlink ${n1}
58
59expect 0 mknod ${n1} c 0644 1 2
60for flag in ${flags1}; do
61 expect 0 chflags ${n0} ${flag}
62 expect ${flag} stat ${n0} flags
63 expect EPERM rename ${n1} ${n0}/${n2}
64done
65expect 0 chflags ${n0} none
66expect 0 unlink ${n1}
67
68expect 0 bind ${n1}
69for flag in ${flags1}; do
70 expect 0 chflags ${n0} ${flag}
71 expect ${flag} stat ${n0} flags
72 expect EPERM rename ${n1} ${n0}/${n2}
73done
74expect 0 chflags ${n0} none
75expect 0 unlink ${n1}
76
77expect 0 symlink ${n2} ${n1}
78for flag in ${flags1}; do
79 expect 0 chflags ${n0} ${flag}
80 expect ${flag} stat ${n0} flags
81 expect EPERM rename ${n1} ${n0}/${n2}
82done
83expect 0 chflags ${n0} none
84expect 0 unlink ${n1}
85
86expect 0 create ${n1} 0644
87for flag in ${flags2}; do
88 expect 0 chflags ${n0} ${flag}
89 expect ${flag} stat ${n0} flags
90 expect 0 rename ${n1} ${n0}/${n2}
32for type in regular dir fifo block char socket symlink; do
33 create_file ${type} ${n1}
34 for flag in ${flags1}; do
35 expect 0 chflags ${n0} ${flag}
36 expect ${flag} stat ${n0} flags
37 expect EPERM rename ${n1} ${n0}/${n2}
38 done
91 expect 0 chflags ${n0} none
39 expect 0 chflags ${n0} none
92 expect 0 rename ${n0}/${n2} ${n1}
40 if [ "${type}" = "dir" ]; then
41 expect 0 rmdir ${n1}
42 else
43 expect 0 unlink ${n1}
44 fi
93done
45done
94expect 0 unlink ${n1}
95
46
96expect 0 mkdir ${n1} 0755
97for flag in ${flags2}; do
98 expect 0 chflags ${n0} ${flag}
99 expect ${flag} stat ${n0} flags
100 expect 0 rename ${n1} ${n0}/${n2}
101 expect 0 chflags ${n0} none
102 expect 0 rename ${n0}/${n2} ${n1}
47for type in regular dir fifo block char socket symlink; do
48 create_file ${type} ${n1}
49 for flag in ${flags2}; do
50 expect 0 chflags ${n0} ${flag}
51 expect ${flag} stat ${n0} flags
52 expect 0 rename ${n1} ${n0}/${n2}
53 expect 0 chflags ${n0} none
54 expect 0 rename ${n0}/${n2} ${n1}
55 done
56 if [ "${type}" = "dir" ]; then
57 expect 0 rmdir ${n1}
58 else
59 expect 0 unlink ${n1}
60 fi
103done
61done
104expect 0 rmdir ${n1}
105
62
106expect 0 mkfifo ${n1} 0644
107for flag in ${flags2}; do
108 expect 0 chflags ${n0} ${flag}
109 expect ${flag} stat ${n0} flags
110 expect 0 rename ${n1} ${n0}/${n2}
111 expect 0 chflags ${n0} none
112 expect 0 rename ${n0}/${n2} ${n1}
113done
114expect 0 unlink ${n1}
115
116expect 0 mknod ${n1} c 0644 1 2
117for flag in ${flags2}; do
118 expect 0 chflags ${n0} ${flag}
119 expect ${flag} stat ${n0} flags
120 expect 0 rename ${n1} ${n0}/${n2}
121 expect 0 chflags ${n0} none
122 expect 0 rename ${n0}/${n2} ${n1}
123done
124expect 0 unlink ${n1}
125
126expect 0 bind ${n1}
127for flag in ${flags2}; do
128 expect 0 chflags ${n0} ${flag}
129 expect ${flag} stat ${n0} flags
130 expect 0 rename ${n1} ${n0}/${n2}
131 expect 0 chflags ${n0} none
132 expect 0 rename ${n0}/${n2} ${n1}
133done
134expect 0 unlink ${n1}
135
136expect 0 symlink ${n2} ${n1}
137for flag in ${flags2}; do
138 expect 0 chflags ${n0} ${flag}
139 expect ${flag} stat ${n0} flags
140 expect 0 rename ${n1} ${n0}/${n2}
141 expect 0 chflags ${n0} none
142 expect 0 rename ${n0}/${n2} ${n1}
143done
144expect 0 unlink ${n1}
145
146expect 0 rmdir ${n0}
63expect 0 rmdir ${n0}