08.t revision 210984
1166065Spjd#!/bin/sh 2166065Spjd# $FreeBSD: head/tools/regression/fstest/tests/rename/08.t 210984 2010-08-06 23:58:54Z pjd $ 3166065Spjd 4166065Spjddesc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set" 5166065Spjd 6166065Spjddir=`dirname $0` 7166065Spjd. ${dir}/../misc.sh 8166065Spjd 9166065Spjdrequire chflags 10166065Spjd 11210984Spjdcase "${os}:${fs}" in 12210984SpjdFreeBSD:ZFS) 13210984Spjd flags1="SF_IMMUTABLE" 14210984Spjd flags2="SF_NOUNLINK SF_APPEND" 15210984Spjd echo "1..110" 16210984Spjd ;; 17210984SpjdFreeBSD:UFS) 18210984Spjd flags1="SF_IMMUTABLE UF_IMMUTABLE" 19210984Spjd flags2="SF_NOUNLINK SF_APPEND UF_NOUNLINK UF_APPEND" 20210984Spjd echo "1..188" 21210984Spjd ;; 22210984Spjd*) 23210984Spjd quick_exit 24210984Spjdesac 25166065Spjd 26166065Spjdn0=`namegen` 27166065Spjdn1=`namegen` 28166065Spjdn2=`namegen` 29166065Spjd 30166065Spjdexpect 0 mkdir ${n0} 0755 31166065Spjd 32166065Spjdexpect 0 create ${n1} 0644 33210984Spjdfor flag in ${flags1}; do 34166065Spjd expect 0 chflags ${n0} ${flag} 35166065Spjd expect ${flag} stat ${n0} flags 36166065Spjd expect EPERM rename ${n1} ${n0}/${n2} 37166065Spjddone 38166065Spjdexpect 0 chflags ${n0} none 39166065Spjdexpect 0 unlink ${n1} 40166065Spjd 41166065Spjdexpect 0 mkdir ${n1} 0755 42210984Spjdfor flag in ${flags1}; do 43166065Spjd expect 0 chflags ${n0} ${flag} 44166065Spjd expect ${flag} stat ${n0} flags 45166065Spjd expect EPERM rename ${n1} ${n0}/${n2} 46166065Spjddone 47166065Spjdexpect 0 chflags ${n0} none 48166065Spjdexpect 0 rmdir ${n1} 49166065Spjd 50166065Spjdexpect 0 mkfifo ${n1} 0644 51210984Spjdfor flag in ${flags1}; do 52166065Spjd expect 0 chflags ${n0} ${flag} 53166065Spjd expect ${flag} stat ${n0} flags 54166065Spjd expect EPERM rename ${n1} ${n0}/${n2} 55166065Spjddone 56166065Spjdexpect 0 chflags ${n0} none 57166065Spjdexpect 0 unlink ${n1} 58166065Spjd 59210984Spjdexpect 0 mknod ${n1} c 0644 1 2 60210984Spjdfor flag in ${flags1}; do 61210984Spjd expect 0 chflags ${n0} ${flag} 62210984Spjd expect ${flag} stat ${n0} flags 63210984Spjd expect EPERM rename ${n1} ${n0}/${n2} 64210984Spjddone 65210984Spjdexpect 0 chflags ${n0} none 66210984Spjdexpect 0 unlink ${n1} 67210984Spjd 68210984Spjdexpect 0 bind ${n1} 69210984Spjdfor flag in ${flags1}; do 70210984Spjd expect 0 chflags ${n0} ${flag} 71210984Spjd expect ${flag} stat ${n0} flags 72210984Spjd expect EPERM rename ${n1} ${n0}/${n2} 73210984Spjddone 74210984Spjdexpect 0 chflags ${n0} none 75210984Spjdexpect 0 unlink ${n1} 76210984Spjd 77166065Spjdexpect 0 symlink ${n2} ${n1} 78210984Spjdfor flag in ${flags1}; do 79166065Spjd expect 0 chflags ${n0} ${flag} 80166065Spjd expect ${flag} stat ${n0} flags 81166065Spjd expect EPERM rename ${n1} ${n0}/${n2} 82166065Spjddone 83166065Spjdexpect 0 chflags ${n0} none 84166065Spjdexpect 0 unlink ${n1} 85166065Spjd 86166065Spjdexpect 0 create ${n1} 0644 87210984Spjdfor flag in ${flags2}; do 88166065Spjd expect 0 chflags ${n0} ${flag} 89166065Spjd expect ${flag} stat ${n0} flags 90166065Spjd expect 0 rename ${n1} ${n0}/${n2} 91166065Spjd expect 0 chflags ${n0} none 92166065Spjd expect 0 rename ${n0}/${n2} ${n1} 93166065Spjddone 94166065Spjdexpect 0 unlink ${n1} 95166065Spjd 96166065Spjdexpect 0 mkdir ${n1} 0755 97210984Spjdfor flag in ${flags2}; do 98166065Spjd expect 0 chflags ${n0} ${flag} 99166065Spjd expect ${flag} stat ${n0} flags 100166065Spjd expect 0 rename ${n1} ${n0}/${n2} 101166065Spjd expect 0 chflags ${n0} none 102166065Spjd expect 0 rename ${n0}/${n2} ${n1} 103166065Spjddone 104166065Spjdexpect 0 rmdir ${n1} 105166065Spjd 106166065Spjdexpect 0 mkfifo ${n1} 0644 107210984Spjdfor flag in ${flags2}; do 108166065Spjd expect 0 chflags ${n0} ${flag} 109166065Spjd expect ${flag} stat ${n0} flags 110166065Spjd expect 0 rename ${n1} ${n0}/${n2} 111166065Spjd expect 0 chflags ${n0} none 112166065Spjd expect 0 rename ${n0}/${n2} ${n1} 113166065Spjddone 114166065Spjdexpect 0 unlink ${n1} 115166065Spjd 116210984Spjdexpect 0 mknod ${n1} c 0644 1 2 117210984Spjdfor flag in ${flags2}; do 118210984Spjd expect 0 chflags ${n0} ${flag} 119210984Spjd expect ${flag} stat ${n0} flags 120210984Spjd expect 0 rename ${n1} ${n0}/${n2} 121210984Spjd expect 0 chflags ${n0} none 122210984Spjd expect 0 rename ${n0}/${n2} ${n1} 123210984Spjddone 124210984Spjdexpect 0 unlink ${n1} 125210984Spjd 126210984Spjdexpect 0 bind ${n1} 127210984Spjdfor flag in ${flags2}; do 128210984Spjd expect 0 chflags ${n0} ${flag} 129210984Spjd expect ${flag} stat ${n0} flags 130210984Spjd expect 0 rename ${n1} ${n0}/${n2} 131210984Spjd expect 0 chflags ${n0} none 132210984Spjd expect 0 rename ${n0}/${n2} ${n1} 133210984Spjddone 134210984Spjdexpect 0 unlink ${n1} 135210984Spjd 136166065Spjdexpect 0 symlink ${n2} ${n1} 137210984Spjdfor flag in ${flags2}; do 138166065Spjd expect 0 chflags ${n0} ${flag} 139166065Spjd expect ${flag} stat ${n0} flags 140166065Spjd expect 0 rename ${n1} ${n0}/${n2} 141166065Spjd expect 0 chflags ${n0} none 142166065Spjd expect 0 rename ${n0}/${n2} ${n1} 143166065Spjddone 144166065Spjdexpect 0 unlink ${n1} 145166065Spjd 146166065Spjdexpect 0 rmdir ${n0} 147