| #!/bin/sh |
| |
| |
|
|
| |
|
|
| |
| |
| |
| |
|
|
| |
| |
| |
| |
|
|
| |
| |
|
|
| . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src |
| print_ver_ mkdir |
| skip_if_setgid_ |
| require_no_default_acl_ . |
|
|
| working_umask_or_skip_ |
|
|
|
|
| |
| |
| tests=' |
| 000 : empty : drwxrwxrwx : drwxrwxrwx : |
| 000 : -m 016 : drwxrwxrwx : d-----xrw- : |
| 077 : empty : drwx------ : drwx------ : |
| 050 : empty : drwx-w-rwx : drwx-w-rwx : |
| 050 : -m 312 : drwx-w-rwx : d-wx--x-w- : |
| 160 : empty : drwx--xrwx : drw---xrwx : |
| 160 : -m 743 : drwx--xrwx : drwxr---wx : |
| 022 : -m o-w : drwxr-xr-x : drwxrwxr-x : |
| 027 : -m =+x : drwxr-x--- : d--x--x--- : |
| 027 : -m =+X : drwxr-x--- : d--x--x--- : |
| - : - : last : last : |
| ' |
| colon_tests=$(echo $tests | sed 's/^ *//; s/ *: */:/g') |
|
|
| for p in empty -p; do |
| test _$p = _empty && p= |
|
|
| old_IFS=$IFS |
| IFS=':' |
| set -- $colon_tests |
| IFS=$old_IFS |
|
|
| while :; do |
| test "$VERBOSE" = yes && set -x |
| umask=$1 mode=$2 parent_perms=$3 sub_perms=$4 |
| test "_$mode" = _empty && mode= |
| test $sub_perms = last && break |
| |
| shift; shift; shift; shift |
| umask $umask |
|
|
| |
| |
| test x$p = x && |
| { |
| mkdir -m =,u=rwx parent || fail=1 |
| parent_perms=drwx------ |
| } |
|
|
| mkdir $p $mode parent/sub || fail=1 |
|
|
| perms=$(stat --printf %A parent) |
| test "$parent_perms" = "$perms" \ |
| || { fail=1; echo parent: expected $parent_perms, got $perms; } |
|
|
| perms=$(stat --printf %A parent/sub) |
| test "$sub_perms" = "$perms" \ |
| || { fail=1; echo parent/sub: expected $sub_perms, got $perms; } |
|
|
| chmod -R u+rwx parent |
| rm -rf parent || fail=1 |
| done |
| done |
|
|
| Exit $fail |
|
|