1271294Sngie#!/bin/sh 2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/rename/06.t 211352 2010-08-15 21:24:17Z pjd $ 3271294Sngie 4271294Sngiedesc="rename returns EPERM if the file pointed at by the 'from' argument has its immutable, undeletable or append-only flag set" 5271294Sngie 6271294Sngiedir=`dirname $0` 7271294Sngie. ${dir}/../misc.sh 8271294Sngie 9271294Sngierequire chflags 10271294Sngie 11271294Sngiecase "${os}:${fs}" in 12271294SngieFreeBSD:ZFS) 13271294Sngie flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND" 14271294Sngie echo "1..195" 15271294Sngie ;; 16271294SngieFreeBSD:UFS) 17271294Sngie flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND UF_IMMUTABLE UF_NOUNLINK UF_APPEND" 18271294Sngie echo "1..351" 19271294Sngie ;; 20271294Sngie*) 21271294Sngie quick_exit 22271294Sngieesac 23271294Sngie 24271294Sngien0=`namegen` 25271294Sngien1=`namegen` 26271294Sngie 27271294Sngiefor type in regular dir fifo block char socket symlink; do 28271294Sngie if [ "${type}" != "symlink" ]; then 29271294Sngie create_file ${type} ${n0} 30271294Sngie for flag in ${flags}; do 31271294Sngie expect 0 chflags ${n0} ${flag} 32271294Sngie expect ${flag} stat ${n0} flags 33271294Sngie [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 34271294Sngie expect EPERM rename ${n0} ${n1} 35271294Sngie [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 36271294Sngie expect ENOENT rename ${n1} ${n0} 37271294Sngie done 38271294Sngie expect 0 chflags ${n0} none 39271294Sngie if [ "${type}" = "dir" ]; then 40271294Sngie expect 0 rmdir ${n0} 41271294Sngie else 42271294Sngie expect 0 unlink ${n0} 43271294Sngie fi 44271294Sngie fi 45271294Sngie 46271294Sngie create_file ${type} ${n0} 47271294Sngie for flag in ${flags}; do 48271294Sngie expect 0 lchflags ${n0} ${flag} 49271294Sngie expect ${flag} lstat ${n0} flags 50271294Sngie [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 51271294Sngie expect EPERM rename ${n0} ${n1} 52271294Sngie [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 53271294Sngie expect ENOENT rename ${n1} ${n0} 54271294Sngie done 55271294Sngie expect 0 lchflags ${n0} none 56271294Sngie if [ "${type}" = "dir" ]; then 57271294Sngie expect 0 rmdir ${n0} 58271294Sngie else 59271294Sngie expect 0 unlink ${n0} 60271294Sngie fi 61271294Sngiedone 62