140a8ac8fSEnji Cooper#!/bin/sh 2*3416500aSEnji Cooper# vim: filetype=sh noexpandtab ts=8 sw=8 340a8ac8fSEnji Cooper# $FreeBSD: head/tools/regression/pjdfstest/tests/rename/00.t 211352 2010-08-15 21:24:17Z pjd $ 440a8ac8fSEnji Cooper 540a8ac8fSEnji Cooperdesc="rename changes file name" 640a8ac8fSEnji Cooper 740a8ac8fSEnji Cooperdir=`dirname $0` 840a8ac8fSEnji Cooper. ${dir}/../misc.sh 940a8ac8fSEnji Cooper 1040a8ac8fSEnji Cooperecho "1..150" 1140a8ac8fSEnji Cooper 1240a8ac8fSEnji Coopern0=`namegen` 1340a8ac8fSEnji Coopern1=`namegen` 1440a8ac8fSEnji Coopern2=`namegen` 1540a8ac8fSEnji Coopern3=`namegen` 1640a8ac8fSEnji Cooper 1740a8ac8fSEnji Cooperexpect 0 mkdir ${n3} 0755 1840a8ac8fSEnji Coopercdir=`pwd` 1940a8ac8fSEnji Coopercd ${n3} 2040a8ac8fSEnji Cooper 2140a8ac8fSEnji Cooperfor type in regular fifo block char socket; do 2240a8ac8fSEnji Cooper create_file ${type} ${n0} 0644 2340a8ac8fSEnji Cooper expect ${type},0644,1 lstat ${n0} type,mode,nlink 2440a8ac8fSEnji Cooper inode=`${fstest} lstat ${n0} inode` 2540a8ac8fSEnji Cooper expect 0 rename ${n0} ${n1} 2640a8ac8fSEnji Cooper expect ENOENT lstat ${n0} type,mode,nlink 2740a8ac8fSEnji Cooper expect ${type},${inode},0644,1 lstat ${n1} type,inode,mode,nlink 2840a8ac8fSEnji Cooper expect 0 link ${n1} ${n0} 2940a8ac8fSEnji Cooper expect ${type},${inode},0644,2 lstat ${n0} type,inode,mode,nlink 3040a8ac8fSEnji Cooper expect ${type},${inode},0644,2 lstat ${n1} type,inode,mode,nlink 3140a8ac8fSEnji Cooper expect 0 rename ${n1} ${n2} 3240a8ac8fSEnji Cooper expect ${type},${inode},0644,2 lstat ${n0} type,inode,mode,nlink 3340a8ac8fSEnji Cooper expect ENOENT lstat ${n1} type,mode,nlink 3440a8ac8fSEnji Cooper expect ${type},${inode},0644,2 lstat ${n2} type,inode,mode,nlink 3540a8ac8fSEnji Cooper expect 0 unlink ${n0} 3640a8ac8fSEnji Cooper expect 0 unlink ${n2} 3740a8ac8fSEnji Cooperdone 3840a8ac8fSEnji Cooper 3940a8ac8fSEnji Cooperexpect 0 mkdir ${n0} 0755 4040a8ac8fSEnji Cooperexpect dir,0755 lstat ${n0} type,mode 4140a8ac8fSEnji Cooperinode=`${fstest} lstat ${n0} inode` 4240a8ac8fSEnji Cooperexpect 0 rename ${n0} ${n1} 4340a8ac8fSEnji Cooperexpect ENOENT lstat ${n0} type,mode 4440a8ac8fSEnji Cooperexpect dir,${inode},0755 lstat ${n1} type,inode,mode 4540a8ac8fSEnji Cooperexpect 0 rmdir ${n1} 4640a8ac8fSEnji Cooper 4740a8ac8fSEnji Cooperexpect 0 create ${n0} 0644 4840a8ac8fSEnji Cooperrinode=`${fstest} lstat ${n0} inode` 4940a8ac8fSEnji Cooperexpect regular,0644 lstat ${n0} type,mode 5040a8ac8fSEnji Cooperexpect 0 symlink ${n0} ${n1} 5140a8ac8fSEnji Coopersinode=`${fstest} lstat ${n1} inode` 5240a8ac8fSEnji Cooperexpect regular,${rinode},0644 stat ${n1} type,inode,mode 5340a8ac8fSEnji Cooperexpect symlink,${sinode} lstat ${n1} type,inode 5440a8ac8fSEnji Cooperexpect 0 rename ${n1} ${n2} 5540a8ac8fSEnji Cooperexpect regular,${rinode},0644 stat ${n0} type,inode,mode 5640a8ac8fSEnji Cooperexpect ENOENT lstat ${n1} type,mode 5740a8ac8fSEnji Cooperexpect symlink,${sinode} lstat ${n2} type,inode 5840a8ac8fSEnji Cooperexpect 0 unlink ${n0} 5940a8ac8fSEnji Cooperexpect 0 unlink ${n2} 6040a8ac8fSEnji Cooper 6140a8ac8fSEnji Cooper# successful rename(2) updates ctime. 6240a8ac8fSEnji Cooperfor type in regular dir fifo block char socket symlink; do 6340a8ac8fSEnji Cooper create_file ${type} ${n0} 6440a8ac8fSEnji Cooper ctime1=`${fstest} lstat ${n0} ctime` 6540a8ac8fSEnji Cooper sleep 1 6640a8ac8fSEnji Cooper expect 0 rename ${n0} ${n1} 6740a8ac8fSEnji Cooper ctime2=`${fstest} lstat ${n1} ctime` 6840a8ac8fSEnji Cooper test_check $ctime1 -lt $ctime2 6940a8ac8fSEnji Cooper if [ "${type}" = "dir" ]; then 7040a8ac8fSEnji Cooper expect 0 rmdir ${n1} 7140a8ac8fSEnji Cooper else 7240a8ac8fSEnji Cooper expect 0 unlink ${n1} 7340a8ac8fSEnji Cooper fi 7440a8ac8fSEnji Cooperdone 7540a8ac8fSEnji Cooper 7640a8ac8fSEnji Cooper# unsuccessful link(2) does not update ctime. 7740a8ac8fSEnji Cooperfor type in regular dir fifo block char socket symlink; do 7840a8ac8fSEnji Cooper create_file ${type} ${n0} 7940a8ac8fSEnji Cooper ctime1=`${fstest} lstat ${n0} ctime` 8040a8ac8fSEnji Cooper sleep 1 8140a8ac8fSEnji Cooper expect EACCES -u 65534 rename ${n0} ${n1} 8240a8ac8fSEnji Cooper ctime2=`${fstest} lstat ${n0} ctime` 8340a8ac8fSEnji Cooper test_check $ctime1 -eq $ctime2 8440a8ac8fSEnji Cooper if [ "${type}" = "dir" ]; then 8540a8ac8fSEnji Cooper expect 0 rmdir ${n0} 8640a8ac8fSEnji Cooper else 8740a8ac8fSEnji Cooper expect 0 unlink ${n0} 8840a8ac8fSEnji Cooper fi 8940a8ac8fSEnji Cooperdone 9040a8ac8fSEnji Cooper 9140a8ac8fSEnji Coopercd ${cdir} 9240a8ac8fSEnji Cooperexpect 0 rmdir ${n3} 93