1#!/bin/sh
| 1#!/bin/sh
|
2# $FreeBSD: head/tools/regression/fstest/tests/rename/06.t 166065 2007-01-17 01:42:12Z pjd $
| 2# $FreeBSD: head/tools/regression/fstest/tests/rename/06.t 210984 2010-08-06 23:58:54Z pjd $
|
3 4desc="rename returns EPERM if the file pointed at by the 'from' argument has its immutable, undeletable or append-only flag set" 5 6dir=`dirname $0` 7. ${dir}/../misc.sh 8 9require chflags 10
| 3 4desc="rename returns EPERM if the file pointed at by the 'from' argument has its immutable, undeletable or append-only flag set" 5 6dir=`dirname $0` 7. ${dir}/../misc.sh 8 9require chflags 10
|
11echo "1..84"
| 11case "${os}:${fs}" in 12FreeBSD:ZFS) 13 flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND" 14 echo "1..90" 15 ;; 16FreeBSD:UFS) 17 flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND UF_IMMUTABLE UF_NOUNLINK UF_APPEND" 18 echo "1..162" 19 ;; 20*) 21 quick_exit 22esac
|
12 13n0=`namegen` 14n1=`namegen` 15 16expect 0 create ${n0} 0644
| 23 24n0=`namegen` 25n1=`namegen` 26 27expect 0 create ${n0} 0644
|
17for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
| 28for flag in ${flags}; do
|
18 expect 0 chflags ${n0} ${flag} 19 expect ${flag} stat ${n0} flags
| 29 expect 0 chflags ${n0} ${flag} 30 expect ${flag} stat ${n0} flags
|
| 31 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
|
20 expect EPERM rename ${n0} ${n1}
| 32 expect EPERM rename ${n0} ${n1}
|
| 33 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 34 expect ENOENT rename ${n1} ${n0}
|
21done 22expect 0 chflags ${n0} none 23expect 0 unlink ${n0} 24 25expect 0 mkdir ${n0} 0755
| 35done 36expect 0 chflags ${n0} none 37expect 0 unlink ${n0} 38 39expect 0 mkdir ${n0} 0755
|
26for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
| 40for flag in ${flags}; do
|
27 expect 0 chflags ${n0} ${flag} 28 expect ${flag} stat ${n0} flags
| 41 expect 0 chflags ${n0} ${flag} 42 expect ${flag} stat ${n0} flags
|
| 43 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a directory protected by SF_APPEND should return EPERM."
|
29 expect EPERM rename ${n0} ${n1}
| 44 expect EPERM rename ${n0} ${n1}
|
| 45 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a directory protected by SF_APPEND should return EPERM." 46 expect ENOENT rename ${n1} ${n0}
|
30done 31expect 0 chflags ${n0} none 32expect 0 rmdir ${n0} 33 34expect 0 mkfifo ${n0} 0644
| 47done 48expect 0 chflags ${n0} none 49expect 0 rmdir ${n0} 50 51expect 0 mkfifo ${n0} 0644
|
35for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
| 52for flag in ${flags}; do
|
36 expect 0 chflags ${n0} ${flag} 37 expect ${flag} stat ${n0} flags
| 53 expect 0 chflags ${n0} ${flag} 54 expect ${flag} stat ${n0} flags
|
| 55 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a fifo protected by SF_APPEND should return EPERM."
|
38 expect EPERM rename ${n0} ${n1}
| 56 expect EPERM rename ${n0} ${n1}
|
| 57 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a fifo protected by SF_APPEND should return EPERM." 58 expect ENOENT rename ${n1} ${n0}
|
39done 40expect 0 chflags ${n0} none 41expect 0 unlink ${n0} 42
| 59done 60expect 0 chflags ${n0} none 61expect 0 unlink ${n0} 62
|
| 63expect 0 mknod ${n0} c 0644 1 2 64for flag in ${flags}; do 65 expect 0 chflags ${n0} ${flag} 66 expect ${flag} stat ${n0} flags 67 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a device protected by SF_APPEND should return EPERM." 68 expect EPERM rename ${n0} ${n1} 69 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a device protected by SF_APPEND should return EPERM." 70 expect ENOENT rename ${n1} ${n0} 71done 72expect 0 chflags ${n0} none 73expect 0 unlink ${n0} 74 75expect 0 bind ${n0} 76for flag in ${flags}; do 77 expect 0 chflags ${n0} ${flag} 78 expect ${flag} stat ${n0} flags 79 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a socket protected by SF_APPEND should return EPERM." 80 expect EPERM rename ${n0} ${n1} 81 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a socket protected by SF_APPEND should return EPERM." 82 expect ENOENT rename ${n1} ${n0} 83done 84expect 0 chflags ${n0} none 85expect 0 unlink ${n0} 86
|
43expect 0 symlink ${n1} ${n0}
| 87expect 0 symlink ${n1} ${n0}
|
44for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
| 88for flag in ${flags}; do
|
45 expect 0 lchflags ${n0} ${flag} 46 expect ${flag} lstat ${n0} flags
| 89 expect 0 lchflags ${n0} ${flag} 90 expect ${flag} lstat ${n0} flags
|
| 91 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a symlink protected by SF_APPEND should return EPERM."
|
47 expect EPERM rename ${n0} ${n1}
| 92 expect EPERM rename ${n0} ${n1}
|
| 93 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a symlink protected by SF_APPEND should return EPERM." 94 expect ENOENT rename ${n1} ${n0}
|
48done 49expect 0 lchflags ${n0} none 50expect 0 unlink ${n0}
| 95done 96expect 0 lchflags ${n0} none 97expect 0 unlink ${n0}
|