OSDN Git Service

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