1166065Spjd#!/bin/sh 2166065Spjd# $FreeBSD: releng/10.2/tools/regression/pjdfstest/tests/unlink/00.t 211156 2010-08-10 22:57:43Z pjd $ 3166065Spjd 4166065Spjddesc="unlink removes regular files, symbolic links, fifos and sockets" 5166065Spjd 6166065Spjddir=`dirname $0` 7166065Spjd. ${dir}/../misc.sh 8166065Spjd 9211156Spjdecho "1..112" 10166065Spjd 11166065Spjdn0=`namegen` 12166065Spjdn1=`namegen` 13166065Spjdn2=`namegen` 14166065Spjd 15166065Spjdexpect 0 mkdir ${n2} 0755 16166065Spjdcdir=`pwd` 17166065Spjdcd ${n2} 18166065Spjd 19166065Spjdexpect 0 create ${n0} 0644 20166065Spjdexpect regular lstat ${n0} type 21166065Spjdexpect 0 unlink ${n0} 22166065Spjdexpect ENOENT lstat ${n0} type 23166065Spjd 24166065Spjdexpect 0 symlink ${n1} ${n0} 25166065Spjdexpect symlink lstat ${n0} type 26166065Spjdexpect 0 unlink ${n0} 27166065Spjdexpect ENOENT lstat ${n0} type 28166065Spjd 29166065Spjdexpect 0 mkfifo ${n0} 0644 30166065Spjdexpect fifo lstat ${n0} type 31166065Spjdexpect 0 unlink ${n0} 32166065Spjdexpect ENOENT lstat ${n0} type 33166065Spjd 34211156Spjdexpect 0 mknod ${n0} b 0644 1 2 35211156Spjdexpect block lstat ${n0} type 36211156Spjdexpect 0 unlink ${n0} 37211156Spjdexpect ENOENT lstat ${n0} type 38166065Spjd 39211156Spjdexpect 0 mknod ${n0} c 0644 1 2 40211156Spjdexpect char lstat ${n0} type 41211156Spjdexpect 0 unlink ${n0} 42211156Spjdexpect ENOENT lstat ${n0} type 43211156Spjd 44211156Spjdexpect 0 bind ${n0} 45211156Spjdexpect socket lstat ${n0} type 46211156Spjdexpect 0 unlink ${n0} 47211156Spjdexpect ENOENT lstat ${n0} type 48211156Spjd 49166065Spjd# successful unlink(2) updates ctime. 50166065Spjdexpect 0 create ${n0} 0644 51166065Spjdexpect 0 link ${n0} ${n1} 52166065Spjdctime1=`${fstest} stat ${n0} ctime` 53166065Spjdsleep 1 54166065Spjdexpect 0 unlink ${n1} 55166065Spjdctime2=`${fstest} stat ${n0} ctime` 56166065Spjdtest_check $ctime1 -lt $ctime2 57166065Spjdexpect 0 unlink ${n0} 58166065Spjd 59166065Spjdexpect 0 mkfifo ${n0} 0644 60166065Spjdexpect 0 link ${n0} ${n1} 61166065Spjdctime1=`${fstest} stat ${n0} ctime` 62166065Spjdsleep 1 63166065Spjdexpect 0 unlink ${n1} 64166065Spjdctime2=`${fstest} stat ${n0} ctime` 65166065Spjdtest_check $ctime1 -lt $ctime2 66166065Spjdexpect 0 unlink ${n0} 67166065Spjd 68211156Spjdexpect 0 mknod ${n0} b 0644 1 2 69211156Spjdexpect 0 link ${n0} ${n1} 70211156Spjdctime1=`${fstest} stat ${n0} ctime` 71211156Spjdsleep 1 72211156Spjdexpect 0 unlink ${n1} 73211156Spjdctime2=`${fstest} stat ${n0} ctime` 74211156Spjdtest_check $ctime1 -lt $ctime2 75211156Spjdexpect 0 unlink ${n0} 76211156Spjd 77211156Spjdexpect 0 mknod ${n0} c 0644 1 2 78211156Spjdexpect 0 link ${n0} ${n1} 79211156Spjdctime1=`${fstest} stat ${n0} ctime` 80211156Spjdsleep 1 81211156Spjdexpect 0 unlink ${n1} 82211156Spjdctime2=`${fstest} stat ${n0} ctime` 83211156Spjdtest_check $ctime1 -lt $ctime2 84211156Spjdexpect 0 unlink ${n0} 85211156Spjd 86211156Spjdexpect 0 bind ${n0} 87211156Spjdexpect 0 link ${n0} ${n1} 88211156Spjdctime1=`${fstest} stat ${n0} ctime` 89211156Spjdsleep 1 90211156Spjdexpect 0 unlink ${n1} 91211156Spjdctime2=`${fstest} stat ${n0} ctime` 92211156Spjdtest_check $ctime1 -lt $ctime2 93211156Spjdexpect 0 unlink ${n0} 94211156Spjd 95166065Spjd# unsuccessful unlink(2) does not update ctime. 96166065Spjdexpect 0 create ${n0} 0644 97166065Spjdctime1=`${fstest} stat ${n0} ctime` 98166065Spjdsleep 1 99166065Spjdexpect EACCES -u 65534 unlink ${n0} 100166065Spjdctime2=`${fstest} stat ${n0} ctime` 101166065Spjdtest_check $ctime1 -eq $ctime2 102166065Spjdexpect 0 unlink ${n0} 103166065Spjd 104166065Spjdexpect 0 mkfifo ${n0} 0644 105166065Spjdctime1=`${fstest} stat ${n0} ctime` 106166065Spjdsleep 1 107166065Spjdexpect EACCES -u 65534 unlink ${n0} 108166065Spjdctime2=`${fstest} stat ${n0} ctime` 109166065Spjdtest_check $ctime1 -eq $ctime2 110166065Spjdexpect 0 unlink ${n0} 111166065Spjd 112211156Spjdexpect 0 mknod ${n0} b 0644 1 2 113211156Spjdctime1=`${fstest} stat ${n0} ctime` 114211156Spjdsleep 1 115211156Spjdexpect EACCES -u 65534 unlink ${n0} 116211156Spjdctime2=`${fstest} stat ${n0} ctime` 117211156Spjdtest_check $ctime1 -eq $ctime2 118211156Spjdexpect 0 unlink ${n0} 119211156Spjd 120211156Spjdexpect 0 mknod ${n0} c 0644 1 2 121211156Spjdctime1=`${fstest} stat ${n0} ctime` 122211156Spjdsleep 1 123211156Spjdexpect EACCES -u 65534 unlink ${n0} 124211156Spjdctime2=`${fstest} stat ${n0} ctime` 125211156Spjdtest_check $ctime1 -eq $ctime2 126211156Spjdexpect 0 unlink ${n0} 127211156Spjd 128211156Spjdexpect 0 bind ${n0} 129211156Spjdctime1=`${fstest} stat ${n0} ctime` 130211156Spjdsleep 1 131211156Spjdexpect EACCES -u 65534 unlink ${n0} 132211156Spjdctime2=`${fstest} stat ${n0} ctime` 133211156Spjdtest_check $ctime1 -eq $ctime2 134211156Spjdexpect 0 unlink ${n0} 135211156Spjd 136166065Spjdexpect 0 mkdir ${n0} 0755 137166065Spjdexpect 0 create ${n0}/${n1} 0644 138166065Spjdtime=`${fstest} stat ${n0} ctime` 139166065Spjdsleep 1 140166065Spjdexpect 0 unlink ${n0}/${n1} 141166065Spjdmtime=`${fstest} stat ${n0} mtime` 142166065Spjdtest_check $time -lt $mtime 143166065Spjdctime=`${fstest} stat ${n0} ctime` 144166065Spjdtest_check $time -lt $ctime 145166065Spjdexpect 0 rmdir ${n0} 146166065Spjd 147166065Spjdexpect 0 mkdir ${n0} 0755 148166065Spjdexpect 0 mkfifo ${n0}/${n1} 0644 149166065Spjdtime=`${fstest} stat ${n0} ctime` 150166065Spjdsleep 1 151166065Spjdexpect 0 unlink ${n0}/${n1} 152166065Spjdmtime=`${fstest} stat ${n0} mtime` 153166065Spjdtest_check $time -lt $mtime 154166065Spjdctime=`${fstest} stat ${n0} ctime` 155166065Spjdtest_check $time -lt $ctime 156166065Spjdexpect 0 rmdir ${n0} 157166065Spjd 158166065Spjdexpect 0 mkdir ${n0} 0755 159211156Spjdexpect 0 mknod ${n0}/${n1} b 0644 1 2 160211156Spjdtime=`${fstest} stat ${n0} ctime` 161211156Spjdsleep 1 162211156Spjdexpect 0 unlink ${n0}/${n1} 163211156Spjdmtime=`${fstest} stat ${n0} mtime` 164211156Spjdtest_check $time -lt $mtime 165211156Spjdctime=`${fstest} stat ${n0} ctime` 166211156Spjdtest_check $time -lt $ctime 167211156Spjdexpect 0 rmdir ${n0} 168211156Spjd 169211156Spjdexpect 0 mkdir ${n0} 0755 170211156Spjdexpect 0 mknod ${n0}/${n1} c 0644 1 2 171211156Spjdtime=`${fstest} stat ${n0} ctime` 172211156Spjdsleep 1 173211156Spjdexpect 0 unlink ${n0}/${n1} 174211156Spjdmtime=`${fstest} stat ${n0} mtime` 175211156Spjdtest_check $time -lt $mtime 176211156Spjdctime=`${fstest} stat ${n0} ctime` 177211156Spjdtest_check $time -lt $ctime 178211156Spjdexpect 0 rmdir ${n0} 179211156Spjd 180211156Spjdexpect 0 mkdir ${n0} 0755 181211156Spjdexpect 0 bind ${n0}/${n1} 182211156Spjdtime=`${fstest} stat ${n0} ctime` 183211156Spjdsleep 1 184211156Spjdexpect 0 unlink ${n0}/${n1} 185211156Spjdmtime=`${fstest} stat ${n0} mtime` 186211156Spjdtest_check $time -lt $mtime 187211156Spjdctime=`${fstest} stat ${n0} ctime` 188211156Spjdtest_check $time -lt $ctime 189211156Spjdexpect 0 rmdir ${n0} 190211156Spjd 191211156Spjdexpect 0 mkdir ${n0} 0755 192166065Spjdexpect 0 symlink test ${n0}/${n1} 193166065Spjdtime=`${fstest} stat ${n0} ctime` 194166065Spjdsleep 1 195166065Spjdexpect 0 unlink ${n0}/${n1} 196166065Spjdmtime=`${fstest} stat ${n0} mtime` 197166065Spjdtest_check $time -lt $mtime 198166065Spjdctime=`${fstest} stat ${n0} ctime` 199166065Spjdtest_check $time -lt $ctime 200166065Spjdexpect 0 rmdir ${n0} 201166065Spjd 202166065Spjdexpect 0 create ${n0} 0644 203166065Spjdexpect 0 link ${n0} ${n1} 204166065Spjdtime=`${fstest} stat ${n0} ctime` 205166065Spjdsleep 1 206166065Spjdexpect 0 unlink ${n1} 207166065Spjdctime=`${fstest} stat ${n0} ctime` 208166065Spjdtest_check $time -lt $ctime 209166065Spjdexpect 0 unlink ${n0} 210166065Spjd 211166065Spjdcd ${cdir} 212166065Spjdexpect 0 rmdir ${n2} 213