xref: /freebsd/contrib/pjdfstest/tests/unlink/00.t (revision 531c2d7af3cd2e64eec94aa1b19c4b2f16fce515)
140a8ac8fSEnji Cooper#!/bin/sh
2*3416500aSEnji Cooper# vim: filetype=sh noexpandtab ts=8 sw=8
340a8ac8fSEnji Cooper# $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/00.t 211352 2010-08-15 21:24:17Z pjd $
440a8ac8fSEnji Cooper
540a8ac8fSEnji Cooperdesc="unlink removes regular files, symbolic links, fifos and sockets"
640a8ac8fSEnji Cooper
740a8ac8fSEnji Cooperdir=`dirname $0`
840a8ac8fSEnji Cooper. ${dir}/../misc.sh
940a8ac8fSEnji Cooper
1040a8ac8fSEnji Cooperecho "1..112"
1140a8ac8fSEnji Cooper
1240a8ac8fSEnji Coopern0=`namegen`
1340a8ac8fSEnji Coopern1=`namegen`
1440a8ac8fSEnji Coopern2=`namegen`
1540a8ac8fSEnji Cooper
1640a8ac8fSEnji Cooperexpect 0 mkdir ${n2} 0755
1740a8ac8fSEnji Coopercdir=`pwd`
1840a8ac8fSEnji Coopercd ${n2}
1940a8ac8fSEnji Cooper
2040a8ac8fSEnji Cooperexpect 0 create ${n0} 0644
2140a8ac8fSEnji Cooperexpect regular lstat ${n0} type
2240a8ac8fSEnji Cooperexpect 0 unlink ${n0}
2340a8ac8fSEnji Cooperexpect ENOENT lstat ${n0} type
2440a8ac8fSEnji Cooper
2540a8ac8fSEnji Cooperexpect 0 symlink ${n1} ${n0}
2640a8ac8fSEnji Cooperexpect symlink lstat ${n0} type
2740a8ac8fSEnji Cooperexpect 0 unlink ${n0}
2840a8ac8fSEnji Cooperexpect ENOENT lstat ${n0} type
2940a8ac8fSEnji Cooper
3040a8ac8fSEnji Cooperexpect 0 mkfifo ${n0} 0644
3140a8ac8fSEnji Cooperexpect fifo lstat ${n0} type
3240a8ac8fSEnji Cooperexpect 0 unlink ${n0}
3340a8ac8fSEnji Cooperexpect ENOENT lstat ${n0} type
3440a8ac8fSEnji Cooper
3540a8ac8fSEnji Cooperexpect 0 mknod ${n0} b 0644 1 2
3640a8ac8fSEnji Cooperexpect block lstat ${n0} type
3740a8ac8fSEnji Cooperexpect 0 unlink ${n0}
3840a8ac8fSEnji Cooperexpect ENOENT lstat ${n0} type
3940a8ac8fSEnji Cooper
4040a8ac8fSEnji Cooperexpect 0 mknod ${n0} c 0644 1 2
4140a8ac8fSEnji Cooperexpect char lstat ${n0} type
4240a8ac8fSEnji Cooperexpect 0 unlink ${n0}
4340a8ac8fSEnji Cooperexpect ENOENT lstat ${n0} type
4440a8ac8fSEnji Cooper
4540a8ac8fSEnji Cooperexpect 0 bind ${n0}
4640a8ac8fSEnji Cooperexpect socket lstat ${n0} type
4740a8ac8fSEnji Cooperexpect 0 unlink ${n0}
4840a8ac8fSEnji Cooperexpect ENOENT lstat ${n0} type
4940a8ac8fSEnji Cooper
5040a8ac8fSEnji Cooper# successful unlink(2) updates ctime.
5140a8ac8fSEnji Cooperexpect 0 create ${n0} 0644
5240a8ac8fSEnji Cooperexpect 0 link ${n0} ${n1}
5340a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
5440a8ac8fSEnji Coopersleep 1
5540a8ac8fSEnji Cooperexpect 0 unlink ${n1}
5640a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
5740a8ac8fSEnji Coopertest_check $ctime1 -lt $ctime2
5840a8ac8fSEnji Cooperexpect 0 unlink ${n0}
5940a8ac8fSEnji Cooper
6040a8ac8fSEnji Cooperexpect 0 mkfifo ${n0} 0644
6140a8ac8fSEnji Cooperexpect 0 link ${n0} ${n1}
6240a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
6340a8ac8fSEnji Coopersleep 1
6440a8ac8fSEnji Cooperexpect 0 unlink ${n1}
6540a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
6640a8ac8fSEnji Coopertest_check $ctime1 -lt $ctime2
6740a8ac8fSEnji Cooperexpect 0 unlink ${n0}
6840a8ac8fSEnji Cooper
6940a8ac8fSEnji Cooperexpect 0 mknod ${n0} b 0644 1 2
7040a8ac8fSEnji Cooperexpect 0 link ${n0} ${n1}
7140a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
7240a8ac8fSEnji Coopersleep 1
7340a8ac8fSEnji Cooperexpect 0 unlink ${n1}
7440a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
7540a8ac8fSEnji Coopertest_check $ctime1 -lt $ctime2
7640a8ac8fSEnji Cooperexpect 0 unlink ${n0}
7740a8ac8fSEnji Cooper
7840a8ac8fSEnji Cooperexpect 0 mknod ${n0} c 0644 1 2
7940a8ac8fSEnji Cooperexpect 0 link ${n0} ${n1}
8040a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
8140a8ac8fSEnji Coopersleep 1
8240a8ac8fSEnji Cooperexpect 0 unlink ${n1}
8340a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
8440a8ac8fSEnji Coopertest_check $ctime1 -lt $ctime2
8540a8ac8fSEnji Cooperexpect 0 unlink ${n0}
8640a8ac8fSEnji Cooper
8740a8ac8fSEnji Cooperexpect 0 bind ${n0}
8840a8ac8fSEnji Cooperexpect 0 link ${n0} ${n1}
8940a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
9040a8ac8fSEnji Coopersleep 1
9140a8ac8fSEnji Cooperexpect 0 unlink ${n1}
9240a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
9340a8ac8fSEnji Coopertest_check $ctime1 -lt $ctime2
9440a8ac8fSEnji Cooperexpect 0 unlink ${n0}
9540a8ac8fSEnji Cooper
9640a8ac8fSEnji Cooper# unsuccessful unlink(2) does not update ctime.
9740a8ac8fSEnji Cooperexpect 0 create ${n0} 0644
9840a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
9940a8ac8fSEnji Coopersleep 1
10040a8ac8fSEnji Cooperexpect EACCES -u 65534 unlink ${n0}
10140a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
10240a8ac8fSEnji Coopertest_check $ctime1 -eq $ctime2
10340a8ac8fSEnji Cooperexpect 0 unlink ${n0}
10440a8ac8fSEnji Cooper
10540a8ac8fSEnji Cooperexpect 0 mkfifo ${n0} 0644
10640a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
10740a8ac8fSEnji Coopersleep 1
10840a8ac8fSEnji Cooperexpect EACCES -u 65534 unlink ${n0}
10940a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
11040a8ac8fSEnji Coopertest_check $ctime1 -eq $ctime2
11140a8ac8fSEnji Cooperexpect 0 unlink ${n0}
11240a8ac8fSEnji Cooper
11340a8ac8fSEnji Cooperexpect 0 mknod ${n0} b 0644 1 2
11440a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
11540a8ac8fSEnji Coopersleep 1
11640a8ac8fSEnji Cooperexpect EACCES -u 65534 unlink ${n0}
11740a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
11840a8ac8fSEnji Coopertest_check $ctime1 -eq $ctime2
11940a8ac8fSEnji Cooperexpect 0 unlink ${n0}
12040a8ac8fSEnji Cooper
12140a8ac8fSEnji Cooperexpect 0 mknod ${n0} c 0644 1 2
12240a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
12340a8ac8fSEnji Coopersleep 1
12440a8ac8fSEnji Cooperexpect EACCES -u 65534 unlink ${n0}
12540a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
12640a8ac8fSEnji Coopertest_check $ctime1 -eq $ctime2
12740a8ac8fSEnji Cooperexpect 0 unlink ${n0}
12840a8ac8fSEnji Cooper
12940a8ac8fSEnji Cooperexpect 0 bind ${n0}
13040a8ac8fSEnji Cooperctime1=`${fstest} stat ${n0} ctime`
13140a8ac8fSEnji Coopersleep 1
13240a8ac8fSEnji Cooperexpect EACCES -u 65534 unlink ${n0}
13340a8ac8fSEnji Cooperctime2=`${fstest} stat ${n0} ctime`
13440a8ac8fSEnji Coopertest_check $ctime1 -eq $ctime2
13540a8ac8fSEnji Cooperexpect 0 unlink ${n0}
13640a8ac8fSEnji Cooper
13740a8ac8fSEnji Cooperexpect 0 mkdir ${n0} 0755
13840a8ac8fSEnji Cooperexpect 0 create ${n0}/${n1} 0644
13940a8ac8fSEnji Coopertime=`${fstest} stat ${n0} ctime`
14040a8ac8fSEnji Coopersleep 1
14140a8ac8fSEnji Cooperexpect 0 unlink ${n0}/${n1}
14240a8ac8fSEnji Coopermtime=`${fstest} stat ${n0} mtime`
14340a8ac8fSEnji Coopertest_check $time -lt $mtime
14440a8ac8fSEnji Cooperctime=`${fstest} stat ${n0} ctime`
14540a8ac8fSEnji Coopertest_check $time -lt $ctime
14640a8ac8fSEnji Cooperexpect 0 rmdir ${n0}
14740a8ac8fSEnji Cooper
14840a8ac8fSEnji Cooperexpect 0 mkdir ${n0} 0755
14940a8ac8fSEnji Cooperexpect 0 mkfifo ${n0}/${n1} 0644
15040a8ac8fSEnji Coopertime=`${fstest} stat ${n0} ctime`
15140a8ac8fSEnji Coopersleep 1
15240a8ac8fSEnji Cooperexpect 0 unlink ${n0}/${n1}
15340a8ac8fSEnji Coopermtime=`${fstest} stat ${n0} mtime`
15440a8ac8fSEnji Coopertest_check $time -lt $mtime
15540a8ac8fSEnji Cooperctime=`${fstest} stat ${n0} ctime`
15640a8ac8fSEnji Coopertest_check $time -lt $ctime
15740a8ac8fSEnji Cooperexpect 0 rmdir ${n0}
15840a8ac8fSEnji Cooper
15940a8ac8fSEnji Cooperexpect 0 mkdir ${n0} 0755
16040a8ac8fSEnji Cooperexpect 0 mknod ${n0}/${n1} b 0644 1 2
16140a8ac8fSEnji Coopertime=`${fstest} stat ${n0} ctime`
16240a8ac8fSEnji Coopersleep 1
16340a8ac8fSEnji Cooperexpect 0 unlink ${n0}/${n1}
16440a8ac8fSEnji Coopermtime=`${fstest} stat ${n0} mtime`
16540a8ac8fSEnji Coopertest_check $time -lt $mtime
16640a8ac8fSEnji Cooperctime=`${fstest} stat ${n0} ctime`
16740a8ac8fSEnji Coopertest_check $time -lt $ctime
16840a8ac8fSEnji Cooperexpect 0 rmdir ${n0}
16940a8ac8fSEnji Cooper
17040a8ac8fSEnji Cooperexpect 0 mkdir ${n0} 0755
17140a8ac8fSEnji Cooperexpect 0 mknod ${n0}/${n1} c 0644 1 2
17240a8ac8fSEnji Coopertime=`${fstest} stat ${n0} ctime`
17340a8ac8fSEnji Coopersleep 1
17440a8ac8fSEnji Cooperexpect 0 unlink ${n0}/${n1}
17540a8ac8fSEnji Coopermtime=`${fstest} stat ${n0} mtime`
17640a8ac8fSEnji Coopertest_check $time -lt $mtime
17740a8ac8fSEnji Cooperctime=`${fstest} stat ${n0} ctime`
17840a8ac8fSEnji Coopertest_check $time -lt $ctime
17940a8ac8fSEnji Cooperexpect 0 rmdir ${n0}
18040a8ac8fSEnji Cooper
18140a8ac8fSEnji Cooperexpect 0 mkdir ${n0} 0755
18240a8ac8fSEnji Cooperexpect 0 bind ${n0}/${n1}
18340a8ac8fSEnji Coopertime=`${fstest} stat ${n0} ctime`
18440a8ac8fSEnji Coopersleep 1
18540a8ac8fSEnji Cooperexpect 0 unlink ${n0}/${n1}
18640a8ac8fSEnji Coopermtime=`${fstest} stat ${n0} mtime`
18740a8ac8fSEnji Coopertest_check $time -lt $mtime
18840a8ac8fSEnji Cooperctime=`${fstest} stat ${n0} ctime`
18940a8ac8fSEnji Coopertest_check $time -lt $ctime
19040a8ac8fSEnji Cooperexpect 0 rmdir ${n0}
19140a8ac8fSEnji Cooper
19240a8ac8fSEnji Cooperexpect 0 mkdir ${n0} 0755
19340a8ac8fSEnji Cooperexpect 0 symlink test ${n0}/${n1}
19440a8ac8fSEnji Coopertime=`${fstest} stat ${n0} ctime`
19540a8ac8fSEnji Coopersleep 1
19640a8ac8fSEnji Cooperexpect 0 unlink ${n0}/${n1}
19740a8ac8fSEnji Coopermtime=`${fstest} stat ${n0} mtime`
19840a8ac8fSEnji Coopertest_check $time -lt $mtime
19940a8ac8fSEnji Cooperctime=`${fstest} stat ${n0} ctime`
20040a8ac8fSEnji Coopertest_check $time -lt $ctime
20140a8ac8fSEnji Cooperexpect 0 rmdir ${n0}
20240a8ac8fSEnji Cooper
20340a8ac8fSEnji Cooperexpect 0 create ${n0} 0644
20440a8ac8fSEnji Cooperexpect 0 link ${n0} ${n1}
20540a8ac8fSEnji Coopertime=`${fstest} stat ${n0} ctime`
20640a8ac8fSEnji Coopersleep 1
20740a8ac8fSEnji Cooperexpect 0 unlink ${n1}
20840a8ac8fSEnji Cooperctime=`${fstest} stat ${n0} ctime`
20940a8ac8fSEnji Coopertest_check $time -lt $ctime
21040a8ac8fSEnji Cooperexpect 0 unlink ${n0}
21140a8ac8fSEnji Cooper
21240a8ac8fSEnji Coopercd ${cdir}
21340a8ac8fSEnji Cooperexpect 0 rmdir ${n2}
214