]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - tools/regression/fstest/tests/chflags/00.t
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / tools / regression / fstest / tests / chflags / 00.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="chflags changes flags"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 require chflags
10
11 echo "1..191"
12
13 n0=`namegen`
14 n1=`namegen`
15 n2=`namegen`
16
17 expect 0 mkdir ${n2} 0755
18 cdir=`pwd`
19 cd ${n2}
20
21 expect 0 create ${n0} 0644
22 expect none stat ${n0} flags
23 expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
24 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
25 expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
26 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags
27 expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
28 expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
29 expect 0 chflags ${n0} none
30 expect none stat ${n0} flags
31 expect 0 unlink ${n0}
32
33 expect 0 mkdir ${n0} 0644
34 expect none stat ${n0} flags
35 expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
36 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
37 expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
38 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags
39 expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
40 expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
41 expect 0 chflags ${n0} none
42 expect none stat ${n0} flags
43 expect 0 rmdir ${n0}
44
45 expect 0 mkfifo ${n0} 0644
46 expect none stat ${n0} flags
47 expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
48 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
49 expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
50 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags
51 expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
52 expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
53 expect 0 chflags ${n0} none
54 expect none stat ${n0} flags
55 expect 0 unlink ${n0}
56
57 expect 0 create ${n0} 0644
58 expect 0 symlink ${n0} ${n1}
59 expect none stat ${n1} flags
60 expect none lstat ${n1} flags
61 expect 0 chflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
62 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n1} flags
63 expect none lstat ${n1} flags
64 expect 0 chflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
65 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n1} flags
66 expect none lstat ${n1} flags
67 expect 0 chflags ${n1} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
68 expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n1} flags
69 expect none lstat ${n1} flags
70 expect 0 chflags ${n1} none
71 expect none stat ${n1} flags
72 expect none lstat ${n1} flags
73 expect 0 unlink ${n1}
74 expect 0 unlink ${n0}
75
76 expect 0 create ${n0} 0644
77 expect 0 symlink ${n0} ${n1}
78 expect none stat ${n1} flags
79 expect none lstat ${n1} flags
80 expect 0 lchflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
81 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK lstat ${n1} flags
82 expect none stat ${n1} flags
83 expect 0 lchflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
84 expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE lstat ${n1} flags
85 expect none stat ${n1} flags
86 expect 0 lchflags ${n1} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
87 expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK lstat ${n1} flags
88 expect none stat ${n1} flags
89 expect 0 lchflags ${n1} none
90 expect none lstat ${n1} flags
91 expect none stat ${n1} flags
92 expect 0 unlink ${n1}
93 expect 0 unlink ${n0}
94
95 # successful chflags(2) updates ctime.
96 expect 0 create ${n0} 0644
97 for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do
98         ctime1=`${fstest} stat ${n0} ctime`
99         sleep 1
100         expect 0 chflags ${n0} ${flag}
101         ctime2=`${fstest} stat ${n0} ctime`
102         test_check $ctime1 -lt $ctime2
103 done
104 expect 0 unlink ${n0}
105
106 expect 0 mkdir ${n0} 0755
107 for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do
108         ctime1=`${fstest} stat ${n0} ctime`
109         sleep 1
110         expect 0 chflags ${n0} ${flag}
111         ctime2=`${fstest} stat ${n0} ctime`
112         test_check $ctime1 -lt $ctime2
113 done
114 expect 0 rmdir ${n0}
115
116 expect 0 mkfifo ${n0} 0644
117 for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do
118         ctime1=`${fstest} stat ${n0} ctime`
119         sleep 1
120         expect 0 chflags ${n0} ${flag}
121         ctime2=`${fstest} stat ${n0} ctime`
122         test_check $ctime1 -lt $ctime2
123 done
124 expect 0 unlink ${n0}
125
126 expect 0 symlink ${n1} ${n0}
127 for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do
128         ctime1=`${fstest} lstat ${n0} ctime`
129         sleep 1
130         expect 0 lchflags ${n0} ${flag}
131         ctime2=`${fstest} lstat ${n0} ctime`
132         test_check $ctime1 -lt $ctime2
133 done
134 expect 0 unlink ${n0}
135
136 # unsuccessful chflags(2) does not update ctime.
137 expect 0 create ${n0} 0644
138 for flag in UF_IMMUTABLE SF_IMMUTABLE none; do
139         ctime1=`${fstest} stat ${n0} ctime`
140         sleep 1
141         expect EPERM -u 65534 chflags ${n0} ${flag}
142         ctime2=`${fstest} stat ${n0} ctime`
143         test_check $ctime1 -eq $ctime2
144 done
145 expect 0 unlink ${n0}
146
147 expect 0 mkdir ${n0} 0755
148 for flag in UF_IMMUTABLE SF_IMMUTABLE none; 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 expect 0 rmdir ${n0}
156
157 expect 0 mkfifo ${n0} 0644
158 for flag in UF_IMMUTABLE SF_IMMUTABLE none; do
159         ctime1=`${fstest} stat ${n0} ctime`
160         sleep 1
161         expect EPERM -u 65534 chflags ${n0} ${flag}
162         ctime2=`${fstest} stat ${n0} ctime`
163         test_check $ctime1 -eq $ctime2
164 done
165 expect 0 unlink ${n0}
166
167 expect 0 symlink ${n1} ${n0}
168 for flag in UF_IMMUTABLE SF_IMMUTABLE none; do
169         ctime1=`${fstest} lstat ${n0} ctime`
170         sleep 1
171         expect EPERM -u 65534 lchflags ${n0} ${flag}
172         ctime2=`${fstest} lstat ${n0} ctime`
173         test_check $ctime1 -eq $ctime2
174 done
175 expect 0 unlink ${n0}
176
177 cd ${cdir}
178 expect 0 rmdir ${n2}