1271294Sngie#!/bin/sh 2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/11.t 211352 2010-08-15 21:24:17Z pjd $ 3271294Sngie 4271294Sngiedesc="chmod returns EFTYPE if the effective user ID is not the super-user, the mode includes the sticky bit (S_ISVTX), and path does not refer to a directory" 5271294Sngie 6271294Sngiedir=`dirname $0` 7271294Sngie. ${dir}/../misc.sh 8271294Sngie 9271294Sngieif supported lchmod; then 10271294Sngie echo "1..173" 11271294Sngieelse 12271294Sngie echo "1..109" 13271294Sngiefi 14271294Sngie 15271294Sngien0=`namegen` 16271294Sngien1=`namegen` 17271294Sngien2=`namegen` 18271294Sngie 19271294Sngieexpect 0 mkdir ${n0} 0755 20271294Sngiecdir=`pwd` 21271294Sngiecd ${n0} 22271294Sngie 23271294Sngiefor type in regular dir fifo block char socket symlink; do 24271294Sngie if [ "${type}" != "symlink" ]; then 25271294Sngie create_file ${type} ${n1} 26271294Sngie expect 0 chmod ${n1} 01621 27271294Sngie expect 01621 stat ${n1} mode 28271294Sngie expect 0 symlink ${n1} ${n2} 29271294Sngie expect 0 chmod ${n2} 01700 30271294Sngie expect 01700 stat ${n1} mode 31271294Sngie expect 0 unlink ${n2} 32271294Sngie if [ "${type}" = "dir" ]; then 33271294Sngie expect 0 rmdir ${n1} 34271294Sngie else 35271294Sngie expect 0 unlink ${n1} 36271294Sngie fi 37271294Sngie fi 38271294Sngie 39271294Sngie if supported lchmod; then 40271294Sngie create_file ${type} ${n1} 41271294Sngie expect 0 lchmod ${n1} 01621 42271294Sngie expect 01621 lstat ${n1} mode 43271294Sngie if [ "${type}" = "dir" ]; then 44271294Sngie expect 0 rmdir ${n1} 45271294Sngie else 46271294Sngie expect 0 unlink ${n1} 47271294Sngie fi 48271294Sngie fi 49271294Sngiedone 50271294Sngie 51271294Sngieexpect 0 mkdir ${n1} 0755 52271294Sngieexpect 0 chown ${n1} 65534 65534 53271294Sngieexpect 0 -u 65534 -g 65534 chmod ${n1} 01755 54271294Sngieexpect 01755 stat ${n1} mode 55271294Sngieexpect 0 symlink ${n1} ${n2} 56271294Sngieexpect 0 chmod ${n2} 01700 57271294Sngieexpect 01700 stat ${n1} mode 58271294Sngieexpect 0 unlink ${n2} 59271294Sngieexpect 0 rmdir ${n1} 60271294Sngie 61271294Sngiefor type in regular fifo block char socket symlink; do 62271294Sngie if [ "${type}" != "symlink" ]; then 63271294Sngie create_file ${type} ${n1} 0640 65534 65534 64271294Sngie expect 0 symlink ${n1} ${n2} 65271294Sngie case "${os}" in 66271294Sngie FreeBSD) 67271294Sngie expect EFTYPE -u 65534 -g 65534 chmod ${n1} 01644 68271294Sngie expect 0640 stat ${n1} mode 69271294Sngie expect EFTYPE -u 65534 -g 65534 chmod ${n2} 01644 70271294Sngie expect 0640 stat ${n1} mode 71271294Sngie ;; 72271294Sngie SunOS) 73271294Sngie expect 0 -u 65534 -g 65534 chmod ${n1} 01644 74271294Sngie expect 0644 stat ${n1} mode 75271294Sngie expect 0 -u 65534 -g 65534 chmod ${n2} 01640 76271294Sngie expect 0640 stat ${n1} mode 77271294Sngie ;; 78271294Sngie Linux) 79271294Sngie expect 0 -u 65534 -g 65534 chmod ${n1} 01644 80271294Sngie expect 01644 stat ${n1} mode 81271294Sngie expect 0 -u 65534 -g 65534 chmod ${n2} 01640 82271294Sngie expect 01640 stat ${n1} mode 83271294Sngie ;; 84271294Sngie esac 85271294Sngie expect 0 unlink ${n2} 86271294Sngie if [ "${type}" = "dir" ]; then 87271294Sngie expect 0 rmdir ${n1} 88271294Sngie else 89271294Sngie expect 0 unlink ${n1} 90271294Sngie fi 91271294Sngie fi 92271294Sngie 93271294Sngie if supported lchmod; then 94271294Sngie create_file ${type} ${n1} 0640 65534 65534 95271294Sngie case "${os}" in 96271294Sngie FreeBSD) 97271294Sngie expect EFTYPE -u 65534 -g 65534 lchmod ${n1} 01644 98271294Sngie expect 0640 lstat ${n1} mode 99271294Sngie ;; 100271294Sngie SunOS) 101271294Sngie expect 0 -u 65534 -g 65534 lchmod ${n1} 01644 102271294Sngie expect 0644 lstat ${n1} mode 103271294Sngie ;; 104271294Sngie Linux) 105271294Sngie expect 0 -u 65534 -g 65534 lchmod ${n1} 01644 106271294Sngie expect 01644 lstat ${n1} mode 107271294Sngie ;; 108271294Sngie esac 109271294Sngie if [ "${type}" = "dir" ]; then 110271294Sngie expect 0 rmdir ${n1} 111271294Sngie else 112271294Sngie expect 0 unlink ${n1} 113271294Sngie fi 114271294Sngie fi 115271294Sngiedone 116271294Sngie 117271294Sngiecd ${cdir} 118271294Sngieexpect 0 rmdir ${n0} 119