1271294Sngie#!/bin/sh
2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/00.t 211352 2010-08-15 21:24:17Z pjd $
3271294Sngie
4271294Sngiedesc="unlink removes regular files, symbolic links, fifos and sockets"
5271294Sngie
6271294Sngiedir=`dirname $0`
7271294Sngie. ${dir}/../misc.sh
8271294Sngie
9271294Sngieecho "1..112"
10271294Sngie
11271294Sngien0=`namegen`
12271294Sngien1=`namegen`
13271294Sngien2=`namegen`
14271294Sngie
15271294Sngieexpect 0 mkdir ${n2} 0755
16271294Sngiecdir=`pwd`
17271294Sngiecd ${n2}
18271294Sngie
19271294Sngieexpect 0 create ${n0} 0644
20271294Sngieexpect regular lstat ${n0} type
21271294Sngieexpect 0 unlink ${n0}
22271294Sngieexpect ENOENT lstat ${n0} type
23271294Sngie
24271294Sngieexpect 0 symlink ${n1} ${n0}
25271294Sngieexpect symlink lstat ${n0} type
26271294Sngieexpect 0 unlink ${n0}
27271294Sngieexpect ENOENT lstat ${n0} type
28271294Sngie
29271294Sngieexpect 0 mkfifo ${n0} 0644
30271294Sngieexpect fifo lstat ${n0} type
31271294Sngieexpect 0 unlink ${n0}
32271294Sngieexpect ENOENT lstat ${n0} type
33271294Sngie
34271294Sngieexpect 0 mknod ${n0} b 0644 1 2
35271294Sngieexpect block lstat ${n0} type
36271294Sngieexpect 0 unlink ${n0}
37271294Sngieexpect ENOENT lstat ${n0} type
38271294Sngie
39271294Sngieexpect 0 mknod ${n0} c 0644 1 2
40271294Sngieexpect char lstat ${n0} type
41271294Sngieexpect 0 unlink ${n0}
42271294Sngieexpect ENOENT lstat ${n0} type
43271294Sngie
44271294Sngieexpect 0 bind ${n0}
45271294Sngieexpect socket lstat ${n0} type
46271294Sngieexpect 0 unlink ${n0}
47271294Sngieexpect ENOENT lstat ${n0} type
48271294Sngie
49271294Sngie# successful unlink(2) updates ctime.
50271294Sngieexpect 0 create ${n0} 0644
51271294Sngieexpect 0 link ${n0} ${n1}
52271294Sngiectime1=`${fstest} stat ${n0} ctime`
53271294Sngiesleep 1
54271294Sngieexpect 0 unlink ${n1}
55271294Sngiectime2=`${fstest} stat ${n0} ctime`
56271294Sngietest_check $ctime1 -lt $ctime2
57271294Sngieexpect 0 unlink ${n0}
58271294Sngie
59271294Sngieexpect 0 mkfifo ${n0} 0644
60271294Sngieexpect 0 link ${n0} ${n1}
61271294Sngiectime1=`${fstest} stat ${n0} ctime`
62271294Sngiesleep 1
63271294Sngieexpect 0 unlink ${n1}
64271294Sngiectime2=`${fstest} stat ${n0} ctime`
65271294Sngietest_check $ctime1 -lt $ctime2
66271294Sngieexpect 0 unlink ${n0}
67271294Sngie
68271294Sngieexpect 0 mknod ${n0} b 0644 1 2
69271294Sngieexpect 0 link ${n0} ${n1}
70271294Sngiectime1=`${fstest} stat ${n0} ctime`
71271294Sngiesleep 1
72271294Sngieexpect 0 unlink ${n1}
73271294Sngiectime2=`${fstest} stat ${n0} ctime`
74271294Sngietest_check $ctime1 -lt $ctime2
75271294Sngieexpect 0 unlink ${n0}
76271294Sngie
77271294Sngieexpect 0 mknod ${n0} c 0644 1 2
78271294Sngieexpect 0 link ${n0} ${n1}
79271294Sngiectime1=`${fstest} stat ${n0} ctime`
80271294Sngiesleep 1
81271294Sngieexpect 0 unlink ${n1}
82271294Sngiectime2=`${fstest} stat ${n0} ctime`
83271294Sngietest_check $ctime1 -lt $ctime2
84271294Sngieexpect 0 unlink ${n0}
85271294Sngie
86271294Sngieexpect 0 bind ${n0}
87271294Sngieexpect 0 link ${n0} ${n1}
88271294Sngiectime1=`${fstest} stat ${n0} ctime`
89271294Sngiesleep 1
90271294Sngieexpect 0 unlink ${n1}
91271294Sngiectime2=`${fstest} stat ${n0} ctime`
92271294Sngietest_check $ctime1 -lt $ctime2
93271294Sngieexpect 0 unlink ${n0}
94271294Sngie
95271294Sngie# unsuccessful unlink(2) does not update ctime.
96271294Sngieexpect 0 create ${n0} 0644
97271294Sngiectime1=`${fstest} stat ${n0} ctime`
98271294Sngiesleep 1
99271294Sngieexpect EACCES -u 65534 unlink ${n0}
100271294Sngiectime2=`${fstest} stat ${n0} ctime`
101271294Sngietest_check $ctime1 -eq $ctime2
102271294Sngieexpect 0 unlink ${n0}
103271294Sngie
104271294Sngieexpect 0 mkfifo ${n0} 0644
105271294Sngiectime1=`${fstest} stat ${n0} ctime`
106271294Sngiesleep 1
107271294Sngieexpect EACCES -u 65534 unlink ${n0}
108271294Sngiectime2=`${fstest} stat ${n0} ctime`
109271294Sngietest_check $ctime1 -eq $ctime2
110271294Sngieexpect 0 unlink ${n0}
111271294Sngie
112271294Sngieexpect 0 mknod ${n0} b 0644 1 2
113271294Sngiectime1=`${fstest} stat ${n0} ctime`
114271294Sngiesleep 1
115271294Sngieexpect EACCES -u 65534 unlink ${n0}
116271294Sngiectime2=`${fstest} stat ${n0} ctime`
117271294Sngietest_check $ctime1 -eq $ctime2
118271294Sngieexpect 0 unlink ${n0}
119271294Sngie
120271294Sngieexpect 0 mknod ${n0} c 0644 1 2
121271294Sngiectime1=`${fstest} stat ${n0} ctime`
122271294Sngiesleep 1
123271294Sngieexpect EACCES -u 65534 unlink ${n0}
124271294Sngiectime2=`${fstest} stat ${n0} ctime`
125271294Sngietest_check $ctime1 -eq $ctime2
126271294Sngieexpect 0 unlink ${n0}
127271294Sngie
128271294Sngieexpect 0 bind ${n0}
129271294Sngiectime1=`${fstest} stat ${n0} ctime`
130271294Sngiesleep 1
131271294Sngieexpect EACCES -u 65534 unlink ${n0}
132271294Sngiectime2=`${fstest} stat ${n0} ctime`
133271294Sngietest_check $ctime1 -eq $ctime2
134271294Sngieexpect 0 unlink ${n0}
135271294Sngie
136271294Sngieexpect 0 mkdir ${n0} 0755
137271294Sngieexpect 0 create ${n0}/${n1} 0644
138271294Sngietime=`${fstest} stat ${n0} ctime`
139271294Sngiesleep 1
140271294Sngieexpect 0 unlink ${n0}/${n1}
141271294Sngiemtime=`${fstest} stat ${n0} mtime`
142271294Sngietest_check $time -lt $mtime
143271294Sngiectime=`${fstest} stat ${n0} ctime`
144271294Sngietest_check $time -lt $ctime
145271294Sngieexpect 0 rmdir ${n0}
146271294Sngie
147271294Sngieexpect 0 mkdir ${n0} 0755
148271294Sngieexpect 0 mkfifo ${n0}/${n1} 0644
149271294Sngietime=`${fstest} stat ${n0} ctime`
150271294Sngiesleep 1
151271294Sngieexpect 0 unlink ${n0}/${n1}
152271294Sngiemtime=`${fstest} stat ${n0} mtime`
153271294Sngietest_check $time -lt $mtime
154271294Sngiectime=`${fstest} stat ${n0} ctime`
155271294Sngietest_check $time -lt $ctime
156271294Sngieexpect 0 rmdir ${n0}
157271294Sngie
158271294Sngieexpect 0 mkdir ${n0} 0755
159271294Sngieexpect 0 mknod ${n0}/${n1} b 0644 1 2
160271294Sngietime=`${fstest} stat ${n0} ctime`
161271294Sngiesleep 1
162271294Sngieexpect 0 unlink ${n0}/${n1}
163271294Sngiemtime=`${fstest} stat ${n0} mtime`
164271294Sngietest_check $time -lt $mtime
165271294Sngiectime=`${fstest} stat ${n0} ctime`
166271294Sngietest_check $time -lt $ctime
167271294Sngieexpect 0 rmdir ${n0}
168271294Sngie
169271294Sngieexpect 0 mkdir ${n0} 0755
170271294Sngieexpect 0 mknod ${n0}/${n1} c 0644 1 2
171271294Sngietime=`${fstest} stat ${n0} ctime`
172271294Sngiesleep 1
173271294Sngieexpect 0 unlink ${n0}/${n1}
174271294Sngiemtime=`${fstest} stat ${n0} mtime`
175271294Sngietest_check $time -lt $mtime
176271294Sngiectime=`${fstest} stat ${n0} ctime`
177271294Sngietest_check $time -lt $ctime
178271294Sngieexpect 0 rmdir ${n0}
179271294Sngie
180271294Sngieexpect 0 mkdir ${n0} 0755
181271294Sngieexpect 0 bind ${n0}/${n1}
182271294Sngietime=`${fstest} stat ${n0} ctime`
183271294Sngiesleep 1
184271294Sngieexpect 0 unlink ${n0}/${n1}
185271294Sngiemtime=`${fstest} stat ${n0} mtime`
186271294Sngietest_check $time -lt $mtime
187271294Sngiectime=`${fstest} stat ${n0} ctime`
188271294Sngietest_check $time -lt $ctime
189271294Sngieexpect 0 rmdir ${n0}
190271294Sngie
191271294Sngieexpect 0 mkdir ${n0} 0755
192271294Sngieexpect 0 symlink test ${n0}/${n1}
193271294Sngietime=`${fstest} stat ${n0} ctime`
194271294Sngiesleep 1
195271294Sngieexpect 0 unlink ${n0}/${n1}
196271294Sngiemtime=`${fstest} stat ${n0} mtime`
197271294Sngietest_check $time -lt $mtime
198271294Sngiectime=`${fstest} stat ${n0} ctime`
199271294Sngietest_check $time -lt $ctime
200271294Sngieexpect 0 rmdir ${n0}
201271294Sngie
202271294Sngieexpect 0 create ${n0} 0644
203271294Sngieexpect 0 link ${n0} ${n1}
204271294Sngietime=`${fstest} stat ${n0} ctime`
205271294Sngiesleep 1
206271294Sngieexpect 0 unlink ${n1}
207271294Sngiectime=`${fstest} stat ${n0} ctime`
208271294Sngietest_check $time -lt $ctime
209271294Sngieexpect 0 unlink ${n0}
210271294Sngie
211271294Sngiecd ${cdir}
212271294Sngieexpect 0 rmdir ${n2}
213