1#!/bin/sh
| 1#!/bin/sh
|
2# $FreeBSD: head/tools/regression/fstest/tests/rename/08.t 210984 2010-08-06 23:58:54Z pjd $
| 2# $FreeBSD: head/tools/regression/fstest/tests/rename/08.t 211186 2010-08-11 17:34:58Z pjd $
|
3 4desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set" 5 6dir=`dirname $0` 7. ${dir}/../misc.sh 8 9require chflags 10 11case "${os}:${fs}" in 12FreeBSD:ZFS) 13 flags1="SF_IMMUTABLE" 14 flags2="SF_NOUNLINK SF_APPEND"
| 3 4desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set" 5 6dir=`dirname $0` 7. ${dir}/../misc.sh 8 9require chflags 10 11case "${os}:${fs}" in 12FreeBSD:ZFS) 13 flags1="SF_IMMUTABLE" 14 flags2="SF_NOUNLINK SF_APPEND"
|
15 echo "1..110"
| 15 echo "1..128"
|
16 ;; 17FreeBSD:UFS) 18 flags1="SF_IMMUTABLE UF_IMMUTABLE" 19 flags2="SF_NOUNLINK SF_APPEND UF_NOUNLINK UF_APPEND"
| 16 ;; 17FreeBSD:UFS) 18 flags1="SF_IMMUTABLE UF_IMMUTABLE" 19 flags2="SF_NOUNLINK SF_APPEND UF_NOUNLINK UF_APPEND"
|
20 echo "1..188"
| 20 echo "1..219"
|
21 ;; 22*) 23 quick_exit 24esac 25 26n0=`namegen` 27n1=`namegen` 28n2=`namegen` 29 30expect 0 mkdir ${n0} 0755 31
| 21 ;; 22*) 23 quick_exit 24esac 25 26n0=`namegen` 27n1=`namegen` 28n2=`namegen` 29 30expect 0 mkdir ${n0} 0755 31
|
32expect 0 create ${n1} 0644 33for flag in ${flags1}; do 34 expect 0 chflags ${n0} ${flag} 35 expect ${flag} stat ${n0} flags 36 expect EPERM rename ${n1} ${n0}/${n2} 37done 38expect 0 chflags ${n0} none 39expect 0 unlink ${n1} 40 41expect 0 mkdir ${n1} 0755 42for flag in ${flags1}; do 43 expect 0 chflags ${n0} ${flag} 44 expect ${flag} stat ${n0} flags 45 expect EPERM rename ${n1} ${n0}/${n2} 46done 47expect 0 chflags ${n0} none 48expect 0 rmdir ${n1} 49 50expect 0 mkfifo ${n1} 0644 51for flag in ${flags1}; do 52 expect 0 chflags ${n0} ${flag} 53 expect ${flag} stat ${n0} flags 54 expect EPERM rename ${n1} ${n0}/${n2} 55done 56expect 0 chflags ${n0} none 57expect 0 unlink ${n1} 58 59expect 0 mknod ${n1} c 0644 1 2 60for flag in ${flags1}; do 61 expect 0 chflags ${n0} ${flag} 62 expect ${flag} stat ${n0} flags 63 expect EPERM rename ${n1} ${n0}/${n2} 64done 65expect 0 chflags ${n0} none 66expect 0 unlink ${n1} 67 68expect 0 bind ${n1} 69for flag in ${flags1}; do 70 expect 0 chflags ${n0} ${flag} 71 expect ${flag} stat ${n0} flags 72 expect EPERM rename ${n1} ${n0}/${n2} 73done 74expect 0 chflags ${n0} none 75expect 0 unlink ${n1} 76 77expect 0 symlink ${n2} ${n1} 78for flag in ${flags1}; do 79 expect 0 chflags ${n0} ${flag} 80 expect ${flag} stat ${n0} flags 81 expect EPERM rename ${n1} ${n0}/${n2} 82done 83expect 0 chflags ${n0} none 84expect 0 unlink ${n1} 85 86expect 0 create ${n1} 0644 87for flag in ${flags2}; do 88 expect 0 chflags ${n0} ${flag} 89 expect ${flag} stat ${n0} flags 90 expect 0 rename ${n1} ${n0}/${n2}
| 32for type in regular dir fifo block char socket symlink; do 33 create_file ${type} ${n1} 34 for flag in ${flags1}; do 35 expect 0 chflags ${n0} ${flag} 36 expect ${flag} stat ${n0} flags 37 expect EPERM rename ${n1} ${n0}/${n2} 38 done
|
91 expect 0 chflags ${n0} none
| 39 expect 0 chflags ${n0} none
|
92 expect 0 rename ${n0}/${n2} ${n1}
| 40 if [ "${type}" = "dir" ]; then 41 expect 0 rmdir ${n1} 42 else 43 expect 0 unlink ${n1} 44 fi
|
93done
| 45done
|
94expect 0 unlink ${n1}
| |
95
| 46
|
96expect 0 mkdir ${n1} 0755 97for flag in ${flags2}; do 98 expect 0 chflags ${n0} ${flag} 99 expect ${flag} stat ${n0} flags 100 expect 0 rename ${n1} ${n0}/${n2} 101 expect 0 chflags ${n0} none 102 expect 0 rename ${n0}/${n2} ${n1}
| 47for type in regular dir fifo block char socket symlink; do 48 create_file ${type} ${n1} 49 for flag in ${flags2}; do 50 expect 0 chflags ${n0} ${flag} 51 expect ${flag} stat ${n0} flags 52 expect 0 rename ${n1} ${n0}/${n2} 53 expect 0 chflags ${n0} none 54 expect 0 rename ${n0}/${n2} ${n1} 55 done 56 if [ "${type}" = "dir" ]; then 57 expect 0 rmdir ${n1} 58 else 59 expect 0 unlink ${n1} 60 fi
|
103done
| 61done
|
104expect 0 rmdir ${n1}
| |
105
| 62
|
106expect 0 mkfifo ${n1} 0644 107for flag in ${flags2}; do 108 expect 0 chflags ${n0} ${flag} 109 expect ${flag} stat ${n0} flags 110 expect 0 rename ${n1} ${n0}/${n2} 111 expect 0 chflags ${n0} none 112 expect 0 rename ${n0}/${n2} ${n1} 113done 114expect 0 unlink ${n1} 115 116expect 0 mknod ${n1} c 0644 1 2 117for flag in ${flags2}; do 118 expect 0 chflags ${n0} ${flag} 119 expect ${flag} stat ${n0} flags 120 expect 0 rename ${n1} ${n0}/${n2} 121 expect 0 chflags ${n0} none 122 expect 0 rename ${n0}/${n2} ${n1} 123done 124expect 0 unlink ${n1} 125 126expect 0 bind ${n1} 127for flag in ${flags2}; do 128 expect 0 chflags ${n0} ${flag} 129 expect ${flag} stat ${n0} flags 130 expect 0 rename ${n1} ${n0}/${n2} 131 expect 0 chflags ${n0} none 132 expect 0 rename ${n0}/${n2} ${n1} 133done 134expect 0 unlink ${n1} 135 136expect 0 symlink ${n2} ${n1} 137for flag in ${flags2}; do 138 expect 0 chflags ${n0} ${flag} 139 expect ${flag} stat ${n0} flags 140 expect 0 rename ${n1} ${n0}/${n2} 141 expect 0 chflags ${n0} none 142 expect 0 rename ${n0}/${n2} ${n1} 143done 144expect 0 unlink ${n1} 145
| |
146expect 0 rmdir ${n0}
| 63expect 0 rmdir ${n0}
|