1#!/bin/sh 2# $FreeBSD: head/tools/regression/pjdfstest/tests/rename/00.t 211352 2010-08-15 21:24:17Z pjd $ 3 4desc="rename changes file name" 5 6dir=`dirname $0` 7. ${dir}/../misc.sh 8 9echo "1..150" 10 11n0=`namegen` 12n1=`namegen` 13n2=`namegen` 14n3=`namegen` 15 16expect 0 mkdir ${n3} 0755 17cdir=`pwd` 18cd ${n3} 19 20for type in regular fifo block char socket; do 21 create_file ${type} ${n0} 0644 22 expect ${type},0644,1 lstat ${n0} type,mode,nlink 23 inode=`${fstest} lstat ${n0} inode` 24 expect 0 rename ${n0} ${n1} 25 expect ENOENT lstat ${n0} type,mode,nlink 26 expect ${type},${inode},0644,1 lstat ${n1} type,inode,mode,nlink 27 expect 0 link ${n1} ${n0} 28 expect ${type},${inode},0644,2 lstat ${n0} type,inode,mode,nlink 29 expect ${type},${inode},0644,2 lstat ${n1} type,inode,mode,nlink 30 expect 0 rename ${n1} ${n2} 31 expect ${type},${inode},0644,2 lstat ${n0} type,inode,mode,nlink 32 expect ENOENT lstat ${n1} type,mode,nlink 33 expect ${type},${inode},0644,2 lstat ${n2} type,inode,mode,nlink 34 expect 0 unlink ${n0} 35 expect 0 unlink ${n2} 36done 37 38expect 0 mkdir ${n0} 0755 39expect dir,0755 lstat ${n0} type,mode 40inode=`${fstest} lstat ${n0} inode` 41expect 0 rename ${n0} ${n1} 42expect ENOENT lstat ${n0} type,mode 43expect dir,${inode},0755 lstat ${n1} type,inode,mode 44expect 0 rmdir ${n1} 45 46expect 0 create ${n0} 0644 47rinode=`${fstest} lstat ${n0} inode` 48expect regular,0644 lstat ${n0} type,mode 49expect 0 symlink ${n0} ${n1} 50sinode=`${fstest} lstat ${n1} inode` 51expect regular,${rinode},0644 stat ${n1} type,inode,mode 52expect symlink,${sinode} lstat ${n1} type,inode 53expect 0 rename ${n1} ${n2} 54expect regular,${rinode},0644 stat ${n0} type,inode,mode 55expect ENOENT lstat ${n1} type,mode 56expect symlink,${sinode} lstat ${n2} type,inode 57expect 0 unlink ${n0} 58expect 0 unlink ${n2} 59 60# successful rename(2) updates ctime. 61for type in regular dir fifo block char socket symlink; do 62 create_file ${type} ${n0} 63 ctime1=`${fstest} lstat ${n0} ctime` 64 sleep 1 65 expect 0 rename ${n0} ${n1} 66 ctime2=`${fstest} lstat ${n1} ctime` 67 test_check $ctime1 -lt $ctime2 68 if [ "${type}" = "dir" ]; then 69 expect 0 rmdir ${n1} 70 else 71 expect 0 unlink ${n1} 72 fi 73done 74 75# unsuccessful link(2) does not update ctime. 76for type in regular dir fifo block char socket symlink; do 77 create_file ${type} ${n0} 78 ctime1=`${fstest} lstat ${n0} ctime` 79 sleep 1 80 expect EACCES -u 65534 rename ${n0} ${n1} 81 ctime2=`${fstest} lstat ${n0} ctime` 82 test_check $ctime1 -eq $ctime2 83 if [ "${type}" = "dir" ]; then 84 expect 0 rmdir ${n0} 85 else 86 expect 0 unlink ${n0} 87 fi 88done 89 90cd ${cdir} 91expect 0 rmdir ${n3} 92