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