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