diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2006-09-16 20:03:56 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2006-09-16 20:03:56 +0000 |
commit | b67faf329cebf0805b2b73cc775ccfc7a05390de (patch) | |
tree | 61071dc36a049a4685e757f637bc36ac928ade0e /tests/mkdir/p-3 | |
parent | adbad7626cbbf81745482b4ddb4a0bcea97a6db6 (diff) | |
download | coreutils-b67faf329cebf0805b2b73cc775ccfc7a05390de.tar.xz |
* NEWS: Document that mkdir -p and install -d now fork on occasion.
* bootstrap.conf (gnulib_modules): Add savewd.
* src/install.c: Include savewd.h.
(process_dir): New function.
(main, install_file_in_file_parents): Use it, along with the new
savewd module, to avoid some race conditions.
* src/mkdir.c: Include savewd.h.
(struct mkdir_options): New members make_ancestor_function, mode,
mode_bits.
(make_ancestor): Return 1 if the resulting directory is not readable.
(process_dir): New function.
(main): Use it, along with new savewd module, to avoid some
race conditions. Fill in new slots of struct mkdir_options, so
that callees get the values.
* tests/install/basic-1: Test for coreutils 5.97 bug that was
fixed in coreutils 6.0, and which should still be fixed with
this change.
* tests/mkdir/p-3: Likewise.
Diffstat (limited to 'tests/mkdir/p-3')
-rwxr-xr-x | tests/mkdir/p-3 | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/tests/mkdir/p-3 b/tests/mkdir/p-3 index 3fab37827..59bf33781 100755 --- a/tests/mkdir/p-3 +++ b/tests/mkdir/p-3 @@ -37,7 +37,7 @@ mkdir -p $tmp || framework_failure=1 cd $tmp || framework_failure=1 mkdir no-access || framework_failure=1 mkdir no-acce2s || framework_failure=1 -mkdir no-acce3s || framework_failure=1 +mkdir -p no-acce3s/d || framework_failure=1 if test $framework_failure = 1; then echo "$0: failure in testing framework" 1>&2 @@ -45,13 +45,18 @@ if test $framework_failure = 1; then fi p=$pwd/$tmp -(cd no-access; chmod 0 . && mkdir -p $p/a/b u/v) 2> /dev/null && fail=1 +(cd no-access && chmod 0 . && mkdir -p $p/a/b u/v) 2> /dev/null && fail=1 test -d $p/a/b || fail=1 # Same as above, but with a following *absolute* name, it should succeed -(cd no-acce2s; chmod 0 . && mkdir -p $p/b/b $p/z) || fail=1 +(cd no-acce2s && chmod 0 . && mkdir -p $p/b/b $p/z) || fail=1 +test -d $p/b/b && test -d $p/z || fail=1 -test -d $p/z || fail=1 +# Same as above, but a trailing relative name in an unreadable directory +# whose parent is inaccessible. coreutils 5.97 fails this test. +(cd no-acce3s/d && chmod a-rx .. && chmod a-r . && mkdir -p a/b $p/b/c d/e && + test -d a/b && test -d d/e) || fail=1 +test -d $p/b/c || fail=1 b=`ls $p/a|tr -d '\n'` # With coreutils-5.3.0, this would fail with $b=bu. |