1271294Sngie#!/bin/sh 2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/rename/00.t 211352 2010-08-15 21:24:17Z pjd $ 3271294Sngie 4271294Sngiedesc="rename changes file name" 5271294Sngie 6271294Sngiedir=`dirname $0` 7271294Sngie. ${dir}/../misc.sh 8271294Sngie 9271294Sngieecho "1..150" 10271294Sngie 11271294Sngien0=`namegen` 12271294Sngien1=`namegen` 13271294Sngien2=`namegen` 14271294Sngien3=`namegen` 15271294Sngie 16271294Sngieexpect 0 mkdir ${n3} 0755 17271294Sngiecdir=`pwd` 18271294Sngiecd ${n3} 19271294Sngie 20271294Sngiefor type in regular fifo block char socket; do 21271294Sngie create_file ${type} ${n0} 0644 22271294Sngie expect ${type},0644,1 lstat ${n0} type,mode,nlink 23271294Sngie inode=`${fstest} lstat ${n0} inode` 24271294Sngie expect 0 rename ${n0} ${n1} 25271294Sngie expect ENOENT lstat ${n0} type,mode,nlink 26271294Sngie expect ${type},${inode},0644,1 lstat ${n1} type,inode,mode,nlink 27271294Sngie expect 0 link ${n1} ${n0} 28271294Sngie expect ${type},${inode},0644,2 lstat ${n0} type,inode,mode,nlink 29271294Sngie expect ${type},${inode},0644,2 lstat ${n1} type,inode,mode,nlink 30271294Sngie expect 0 rename ${n1} ${n2} 31271294Sngie expect ${type},${inode},0644,2 lstat ${n0} type,inode,mode,nlink 32271294Sngie expect ENOENT lstat ${n1} type,mode,nlink 33271294Sngie expect ${type},${inode},0644,2 lstat ${n2} type,inode,mode,nlink 34271294Sngie expect 0 unlink ${n0} 35271294Sngie expect 0 unlink ${n2} 36271294Sngiedone 37271294Sngie 38271294Sngieexpect 0 mkdir ${n0} 0755 39271294Sngieexpect dir,0755 lstat ${n0} type,mode 40271294Sngieinode=`${fstest} lstat ${n0} inode` 41271294Sngieexpect 0 rename ${n0} ${n1} 42271294Sngieexpect ENOENT lstat ${n0} type,mode 43271294Sngieexpect dir,${inode},0755 lstat ${n1} type,inode,mode 44271294Sngieexpect 0 rmdir ${n1} 45271294Sngie 46271294Sngieexpect 0 create ${n0} 0644 47271294Sngierinode=`${fstest} lstat ${n0} inode` 48271294Sngieexpect regular,0644 lstat ${n0} type,mode 49271294Sngieexpect 0 symlink ${n0} ${n1} 50271294Sngiesinode=`${fstest} lstat ${n1} inode` 51271294Sngieexpect regular,${rinode},0644 stat ${n1} type,inode,mode 52271294Sngieexpect symlink,${sinode} lstat ${n1} type,inode 53271294Sngieexpect 0 rename ${n1} ${n2} 54271294Sngieexpect regular,${rinode},0644 stat ${n0} type,inode,mode 55271294Sngieexpect ENOENT lstat ${n1} type,mode 56271294Sngieexpect symlink,${sinode} lstat ${n2} type,inode 57271294Sngieexpect 0 unlink ${n0} 58271294Sngieexpect 0 unlink ${n2} 59271294Sngie 60271294Sngie# successful rename(2) updates ctime. 61271294Sngiefor type in regular dir fifo block char socket symlink; do 62271294Sngie create_file ${type} ${n0} 63271294Sngie ctime1=`${fstest} lstat ${n0} ctime` 64271294Sngie sleep 1 65271294Sngie expect 0 rename ${n0} ${n1} 66271294Sngie ctime2=`${fstest} lstat ${n1} ctime` 67271294Sngie test_check $ctime1 -lt $ctime2 68271294Sngie if [ "${type}" = "dir" ]; then 69271294Sngie expect 0 rmdir ${n1} 70271294Sngie else 71271294Sngie expect 0 unlink ${n1} 72271294Sngie fi 73271294Sngiedone 74271294Sngie 75271294Sngie# unsuccessful link(2) does not update ctime. 76271294Sngiefor type in regular dir fifo block char socket symlink; do 77271294Sngie create_file ${type} ${n0} 78271294Sngie ctime1=`${fstest} lstat ${n0} ctime` 79271294Sngie sleep 1 80271294Sngie expect EACCES -u 65534 rename ${n0} ${n1} 81271294Sngie ctime2=`${fstest} lstat ${n0} ctime` 82271294Sngie test_check $ctime1 -eq $ctime2 83271294Sngie if [ "${type}" = "dir" ]; then 84271294Sngie expect 0 rmdir ${n0} 85271294Sngie else 86271294Sngie expect 0 unlink ${n0} 87271294Sngie fi 88271294Sngiedone 89271294Sngie 90271294Sngiecd ${cdir} 91271294Sngieexpect 0 rmdir ${n3} 92