4 desc="chflags changes flags"
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"
20 allflags="UF_NODUMP,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
22 systemflags="SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
35 expect 0 mkdir ${n2} 0755
39 for type in regular dir fifo block char socket; do
40 create_file ${type} ${n0}
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
56 create_file ${type} ${n0}
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
73 expect 0 create ${n0} 0644
74 expect 0 symlink ${n0} ${n1}
75 expect none stat ${n1} flags
76 expect none lstat ${n1} flags
77 expect 0 chflags ${n1} ${allflags}
78 expect ${allflags} stat ${n1} flags
79 expect none lstat ${n1} flags
80 expect 0 chflags ${n1} ${userflags}
81 expect ${userflags} stat ${n1} flags
82 expect none lstat ${n1} flags
83 expect 0 chflags ${n1} ${systemflags}
84 expect ${systemflags} stat ${n1} flags
85 expect none lstat ${n1} flags
86 expect 0 chflags ${n1} none
87 expect none stat ${n1} flags
88 expect none lstat ${n1} flags
92 expect 0 create ${n0} 0644
93 expect 0 symlink ${n0} ${n1}
94 expect none stat ${n1} flags
95 expect none lstat ${n1} flags
96 expect 0 lchflags ${n1} ${allflags}
97 expect ${allflags} lstat ${n1} flags
98 expect none stat ${n1} flags
99 expect 0 lchflags ${n1} ${userflags}
100 expect ${userflags} lstat ${n1} flags
101 expect none stat ${n1} flags
102 expect 0 lchflags ${n1} ${systemflags}
103 expect ${systemflags} lstat ${n1} flags
104 expect none stat ${n1} flags
105 expect 0 lchflags ${n1} none
106 expect none lstat ${n1} flags
107 expect none stat ${n1} flags
108 expect 0 unlink ${n1}
109 expect 0 unlink ${n0}
111 # successful chflags(2) updates ctime.
112 for type in regular dir fifo block char socket symlink; do
113 if [ "${type}" != "symlink" ]; then
114 create_file ${type} ${n0}
115 for flag in `echo ${allflags},none | tr ',' ' '`; do
116 ctime1=`${fstest} stat ${n0} ctime`
118 expect 0 chflags ${n0} ${flag}
119 ctime2=`${fstest} stat ${n0} ctime`
120 test_check $ctime1 -lt $ctime2
122 if [ "${type}" = "dir" ]; then
125 expect 0 unlink ${n0}
129 create_file ${type} ${n0}
130 for flag in `echo ${allflags},none | tr ',' ' '`; do
131 ctime1=`${fstest} lstat ${n0} ctime`
133 expect 0 lchflags ${n0} ${flag}
134 ctime2=`${fstest} lstat ${n0} ctime`
135 test_check $ctime1 -lt $ctime2
137 if [ "${type}" = "dir" ]; then
140 expect 0 unlink ${n0}
144 # unsuccessful chflags(2) does not update ctime.
145 for type in regular dir fifo block char socket symlink; do
146 if [ "${type}" != "symlink" ]; then
147 create_file ${type} ${n0}
148 for flag in `echo ${allflags},none | tr ',' ' '`; do
149 ctime1=`${fstest} stat ${n0} ctime`
151 expect EPERM -u 65534 chflags ${n0} ${flag}
152 ctime2=`${fstest} stat ${n0} ctime`
153 test_check $ctime1 -eq $ctime2
155 if [ "${type}" = "dir" ]; then
158 expect 0 unlink ${n0}
162 create_file ${type} ${n0}
163 for flag in `echo ${allflags},none | tr ',' ' '`; do
164 ctime1=`${fstest} lstat ${n0} ctime`
166 expect EPERM -u 65534 lchflags ${n0} ${flag}
167 ctime2=`${fstest} lstat ${n0} ctime`
168 test_check $ctime1 -eq $ctime2
170 if [ "${type}" = "dir" ]; then
173 expect 0 unlink ${n0}