2 # vim: filetype=sh noexpandtab ts=8 sw=8
3 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/00.t 211352 2010-08-15 21:24:17Z pjd $
5 desc="chflags changes flags"
14 allflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
15 userflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE"
16 systemflags="SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
21 allflags="UF_NODUMP,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
23 systemflags="SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK"
36 expect 0 mkdir ${n2} 0755
40 for type in regular dir fifo block char socket; do
41 create_file ${type} ${n0}
42 expect none stat ${n0} flags
43 expect 0 chflags ${n0} ${allflags}
44 expect ${allflags} stat ${n0} flags
45 expect 0 chflags ${n0} ${userflags}
46 expect ${userflags} stat ${n0} flags
47 expect 0 chflags ${n0} ${systemflags}
48 expect ${systemflags} stat ${n0} flags
49 expect 0 chflags ${n0} none
50 expect none stat ${n0} flags
51 if [ "${type}" = "dir" ]; then
57 create_file ${type} ${n0}
58 expect none stat ${n0} flags
59 expect 0 lchflags ${n0} ${allflags}
60 expect ${allflags} stat ${n0} flags
61 expect 0 lchflags ${n0} ${userflags}
62 expect ${userflags} stat ${n0} flags
63 expect 0 lchflags ${n0} ${systemflags}
64 expect ${systemflags} stat ${n0} flags
65 expect 0 lchflags ${n0} none
66 expect none stat ${n0} flags
67 if [ "${type}" = "dir" ]; then
74 expect 0 create ${n0} 0644
75 expect 0 symlink ${n0} ${n1}
76 expect none stat ${n1} flags
77 expect none lstat ${n1} flags
78 expect 0 chflags ${n1} ${allflags}
79 expect ${allflags} stat ${n1} flags
80 expect none lstat ${n1} flags
81 expect 0 chflags ${n1} ${userflags}
82 expect ${userflags} stat ${n1} flags
83 expect none lstat ${n1} flags
84 expect 0 chflags ${n1} ${systemflags}
85 expect ${systemflags} stat ${n1} flags
86 expect none lstat ${n1} flags
87 expect 0 chflags ${n1} none
88 expect none stat ${n1} flags
89 expect none lstat ${n1} flags
93 expect 0 create ${n0} 0644
94 expect 0 symlink ${n0} ${n1}
95 expect none stat ${n1} flags
96 expect none lstat ${n1} flags
97 expect 0 lchflags ${n1} ${allflags}
98 expect ${allflags} lstat ${n1} flags
99 expect none stat ${n1} flags
100 expect 0 lchflags ${n1} ${userflags}
101 expect ${userflags} lstat ${n1} flags
102 expect none stat ${n1} flags
103 expect 0 lchflags ${n1} ${systemflags}
104 expect ${systemflags} lstat ${n1} flags
105 expect none stat ${n1} flags
106 expect 0 lchflags ${n1} none
107 expect none lstat ${n1} flags
108 expect none stat ${n1} flags
109 expect 0 unlink ${n1}
110 expect 0 unlink ${n0}
112 # successful chflags(2) updates ctime.
113 for type in regular dir fifo block char socket symlink; do
114 if [ "${type}" != "symlink" ]; then
115 create_file ${type} ${n0}
116 for flag in `echo ${allflags},none | tr ',' ' '`; do
117 ctime1=`${fstest} stat ${n0} ctime`
119 expect 0 chflags ${n0} ${flag}
120 ctime2=`${fstest} stat ${n0} ctime`
121 test_check $ctime1 -lt $ctime2
123 if [ "${type}" = "dir" ]; then
126 expect 0 unlink ${n0}
130 create_file ${type} ${n0}
131 for flag in `echo ${allflags},none | tr ',' ' '`; do
132 ctime1=`${fstest} lstat ${n0} ctime`
134 expect 0 lchflags ${n0} ${flag}
135 ctime2=`${fstest} lstat ${n0} ctime`
136 test_check $ctime1 -lt $ctime2
138 if [ "${type}" = "dir" ]; then
141 expect 0 unlink ${n0}
145 # unsuccessful chflags(2) does not update ctime.
146 for type in regular dir fifo block char socket symlink; do
147 if [ "${type}" != "symlink" ]; then
148 create_file ${type} ${n0}
149 for flag in `echo ${allflags},none | tr ',' ' '`; do
150 ctime1=`${fstest} stat ${n0} ctime`
152 expect EPERM -u 65534 chflags ${n0} ${flag}
153 ctime2=`${fstest} stat ${n0} ctime`
154 test_check $ctime1 -eq $ctime2
156 if [ "${type}" = "dir" ]; then
159 expect 0 unlink ${n0}
163 create_file ${type} ${n0}
164 for flag in `echo ${allflags},none | tr ',' ' '`; do
165 ctime1=`${fstest} lstat ${n0} ctime`
167 expect EPERM -u 65534 lchflags ${n0} ${flag}
168 ctime2=`${fstest} lstat ${n0} ctime`
169 test_check $ctime1 -eq $ctime2
171 if [ "${type}" = "dir" ]; then
174 expect 0 unlink ${n0}