Deleted Added
full compact
00.t (185173) 00.t (211180)
1#!/bin/sh
1#!/bin/sh
2# $FreeBSD: head/tools/regression/fstest/tests/chflags/00.t 185173 2008-11-22 13:27:15Z pjd $
2# $FreeBSD: head/tools/regression/fstest/tests/chflags/00.t 211180 2010-08-11 16:34:44Z pjd $
3
4desc="chflags changes flags"
5
6dir=`dirname $0`
7. ${dir}/../misc.sh
8
9require chflags
10
11case "${os}:${fs}" in
12FreeBSD:UFS)
13 allflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
14 userflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE"
15 systemflags="SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
16
3
4desc="chflags changes flags"
5
6dir=`dirname $0`
7. ${dir}/../misc.sh
8
9require chflags
10
11case "${os}:${fs}" in
12FreeBSD:UFS)
13 allflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
14 userflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE"
15 systemflags="SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
16
17 echo "1..247"
17 echo "1..780"
18 ;;
19FreeBSD:ZFS)
20 allflags="UF_NODUMP,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
21 userflags="UF_NODUMP"
22 systemflags="SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
23
18 ;;
19FreeBSD:ZFS)
20 allflags="UF_NODUMP,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
21 userflags="UF_NODUMP"
22 systemflags="SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
23
24 echo "1..167"
24 echo "1..520"
25 ;;
26*)
27 quick_exit
28 ;;
29esac
30
31n0=`namegen`
32n1=`namegen`
33n2=`namegen`
34
35expect 0 mkdir ${n2} 0755
36cdir=`pwd`
37cd ${n2}
38
25 ;;
26*)
27 quick_exit
28 ;;
29esac
30
31n0=`namegen`
32n1=`namegen`
33n2=`namegen`
34
35expect 0 mkdir ${n2} 0755
36cdir=`pwd`
37cd ${n2}
38
39expect 0 create ${n0} 0644
40expect none stat ${n0} flags
41expect 0 chflags ${n0} ${allflags}
42expect ${allflags} stat ${n0} flags
43expect 0 chflags ${n0} ${userflags}
44expect ${userflags} stat ${n0} flags
45expect 0 chflags ${n0} ${systemflags}
46expect ${systemflags} stat ${n0} flags
47expect 0 chflags ${n0} none
48expect none stat ${n0} flags
49expect 0 unlink ${n0}
39for type in regular dir fifo block char socket; do
40 create_file ${type} ${n0} 0 0
41 expect none stat ${n0} flags
42 expect 0 chflags ${n0} ${allflags}
43 expect ${allflags} stat ${n0} flags
44 expect 0 chflags ${n0} ${userflags}
45 expect ${userflags} stat ${n0} flags
46 expect 0 chflags ${n0} ${systemflags}
47 expect ${systemflags} stat ${n0} flags
48 expect 0 chflags ${n0} none
49 expect none stat ${n0} flags
50 if [ "${type}" = "dir" ]; then
51 expect 0 rmdir ${n0}
52 else
53 expect 0 unlink ${n0}
54 fi
50
55
51expect 0 mkdir ${n0} 0644
52expect none stat ${n0} flags
53expect 0 chflags ${n0} ${allflags}
54expect ${allflags} stat ${n0} flags
55expect 0 chflags ${n0} ${userflags}
56expect ${userflags} stat ${n0} flags
57expect 0 chflags ${n0} ${systemflags}
58expect ${systemflags} stat ${n0} flags
59expect 0 chflags ${n0} none
60expect none stat ${n0} flags
61expect 0 rmdir ${n0}
56 create_file ${type} ${n0} 0 0
57 expect none stat ${n0} flags
58 expect 0 lchflags ${n0} ${allflags}
59 expect ${allflags} stat ${n0} flags
60 expect 0 lchflags ${n0} ${userflags}
61 expect ${userflags} stat ${n0} flags
62 expect 0 lchflags ${n0} ${systemflags}
63 expect ${systemflags} stat ${n0} flags
64 expect 0 lchflags ${n0} none
65 expect none stat ${n0} flags
66 if [ "${type}" = "dir" ]; then
67 expect 0 rmdir ${n0}
68 else
69 expect 0 unlink ${n0}
70 fi
71done
62
72
63expect 0 mkfifo ${n0} 0644
64expect none stat ${n0} flags
65expect 0 chflags ${n0} ${allflags}
66expect ${allflags} stat ${n0} flags
67expect 0 chflags ${n0} ${userflags}
68expect ${userflags} stat ${n0} flags
69expect 0 chflags ${n0} ${systemflags}
70expect ${systemflags} stat ${n0} flags
71expect 0 chflags ${n0} none
72expect none stat ${n0} flags
73expect 0 unlink ${n0}
74
75expect 0 create ${n0} 0644
76expect 0 symlink ${n0} ${n1}
77expect none stat ${n1} flags
78expect none lstat ${n1} flags
79expect 0 chflags ${n1} ${allflags}
80expect ${allflags} stat ${n1} flags
81expect none lstat ${n1} flags
82expect 0 chflags ${n1} ${userflags}

--- 23 unchanged lines hidden (view full) ---

106expect none stat ${n1} flags
107expect 0 lchflags ${n1} none
108expect none lstat ${n1} flags
109expect none stat ${n1} flags
110expect 0 unlink ${n1}
111expect 0 unlink ${n0}
112
113# successful chflags(2) updates ctime.
73expect 0 create ${n0} 0644
74expect 0 symlink ${n0} ${n1}
75expect none stat ${n1} flags
76expect none lstat ${n1} flags
77expect 0 chflags ${n1} ${allflags}
78expect ${allflags} stat ${n1} flags
79expect none lstat ${n1} flags
80expect 0 chflags ${n1} ${userflags}

--- 23 unchanged lines hidden (view full) ---

104expect none stat ${n1} flags
105expect 0 lchflags ${n1} none
106expect none lstat ${n1} flags
107expect none stat ${n1} flags
108expect 0 unlink ${n1}
109expect 0 unlink ${n0}
110
111# successful chflags(2) updates ctime.
114expect 0 create ${n0} 0644
115for flag in `echo ${allflags},none | tr ',' ' '`; do
116 ctime1=`${fstest} stat ${n0} ctime`
117 sleep 1
118 expect 0 chflags ${n0} ${flag}
119 ctime2=`${fstest} stat ${n0} ctime`
120 test_check $ctime1 -lt $ctime2
121done
122expect 0 unlink ${n0}
112for type in regular dir fifo block char socket symlink; do
113 if [ "${type}" != "symlink" ]; then
114 create_file ${type} ${n0} 0 0
115 for flag in `echo ${allflags},none | tr ',' ' '`; do
116 ctime1=`${fstest} stat ${n0} ctime`
117 sleep 1
118 expect 0 chflags ${n0} ${flag}
119 ctime2=`${fstest} stat ${n0} ctime`
120 test_check $ctime1 -lt $ctime2
121 done
122 if [ "${type}" = "dir" ]; then
123 expect 0 rmdir ${n0}
124 else
125 expect 0 unlink ${n0}
126 fi
127 fi
123
128
124expect 0 mkdir ${n0} 0755
125for flag in `echo ${allflags},none | tr ',' ' '`; do
126 ctime1=`${fstest} stat ${n0} ctime`
127 sleep 1
128 expect 0 chflags ${n0} ${flag}
129 ctime2=`${fstest} stat ${n0} ctime`
130 test_check $ctime1 -lt $ctime2
129 create_file ${type} ${n0} 0 0
130 for flag in `echo ${allflags},none | tr ',' ' '`; do
131 ctime1=`${fstest} lstat ${n0} ctime`
132 sleep 1
133 expect 0 lchflags ${n0} ${flag}
134 ctime2=`${fstest} lstat ${n0} ctime`
135 test_check $ctime1 -lt $ctime2
136 done
137 if [ "${type}" = "dir" ]; then
138 expect 0 rmdir ${n0}
139 else
140 expect 0 unlink ${n0}
141 fi
131done
142done
132expect 0 rmdir ${n0}
133
143
134expect 0 mkfifo ${n0} 0644
135for flag in `echo ${allflags},none | tr ',' ' '`; do
136 ctime1=`${fstest} stat ${n0} ctime`
137 sleep 1
138 expect 0 chflags ${n0} ${flag}
139 ctime2=`${fstest} stat ${n0} ctime`
140 test_check $ctime1 -lt $ctime2
141done
142expect 0 unlink ${n0}
143
144expect 0 symlink ${n1} ${n0}
145for flag in `echo ${allflags},none | tr ',' ' '`; do
146 ctime1=`${fstest} lstat ${n0} ctime`
147 sleep 1
148 expect 0 lchflags ${n0} ${flag}
149 ctime2=`${fstest} lstat ${n0} ctime`
150 test_check $ctime1 -lt $ctime2
151done
152expect 0 unlink ${n0}
153
154# unsuccessful chflags(2) does not update ctime.
144# unsuccessful chflags(2) does not update ctime.
155expect 0 create ${n0} 0644
156for flag in `echo ${allflags},none | tr ',' ' '`; do
157 ctime1=`${fstest} stat ${n0} ctime`
158 sleep 1
159 expect EPERM -u 65534 chflags ${n0} ${flag}
160 ctime2=`${fstest} stat ${n0} ctime`
161 test_check $ctime1 -eq $ctime2
162done
163expect 0 unlink ${n0}
145for type in regular dir fifo block char socket symlink; do
146 if [ "${type}" != "symlink" ]; then
147 create_file ${type} ${n0} 0 0
148 for flag in `echo ${allflags},none | tr ',' ' '`; do
149 ctime1=`${fstest} stat ${n0} ctime`
150 sleep 1
151 expect EPERM -u 65534 chflags ${n0} ${flag}
152 ctime2=`${fstest} stat ${n0} ctime`
153 test_check $ctime1 -eq $ctime2
154 done
155 if [ "${type}" = "dir" ]; then
156 expect 0 rmdir ${n0}
157 else
158 expect 0 unlink ${n0}
159 fi
160 fi
164
161
165expect 0 mkdir ${n0} 0755
166for flag in `echo ${allflags},none | tr ',' ' '`; do
167 ctime1=`${fstest} stat ${n0} ctime`
168 sleep 1
169 expect EPERM -u 65534 chflags ${n0} ${flag}
170 ctime2=`${fstest} stat ${n0} ctime`
171 test_check $ctime1 -eq $ctime2
162 create_file ${type} ${n0} 0 0
163 for flag in `echo ${allflags},none | tr ',' ' '`; do
164 ctime1=`${fstest} lstat ${n0} ctime`
165 sleep 1
166 expect EPERM -u 65534 lchflags ${n0} ${flag}
167 ctime2=`${fstest} lstat ${n0} ctime`
168 test_check $ctime1 -eq $ctime2
169 done
170 if [ "${type}" = "dir" ]; then
171 expect 0 rmdir ${n0}
172 else
173 expect 0 unlink ${n0}
174 fi
172done
175done
173expect 0 rmdir ${n0}
174
176
175expect 0 mkfifo ${n0} 0644
176for flag in `echo ${allflags},none | tr ',' ' '`; do
177 ctime1=`${fstest} stat ${n0} ctime`
178 sleep 1
179 expect EPERM -u 65534 chflags ${n0} ${flag}
180 ctime2=`${fstest} stat ${n0} ctime`
181 test_check $ctime1 -eq $ctime2
182done
183expect 0 unlink ${n0}
184
185expect 0 symlink ${n1} ${n0}
186for flag in `echo ${allflags},none | tr ',' ' '`; do
187 ctime1=`${fstest} lstat ${n0} ctime`
188 sleep 1
189 expect EPERM -u 65534 lchflags ${n0} ${flag}
190 ctime2=`${fstest} lstat ${n0} ctime`
191 test_check $ctime1 -eq $ctime2
192done
193expect 0 unlink ${n0}
194
195cd ${cdir}
196expect 0 rmdir ${n2}
177cd ${cdir}
178expect 0 rmdir ${n2}