tar: port --overwrite symlink test to GNU/Hurd

Problem reported by Pino Toscano in
<http://lists.gnu.org/archive/html/bug-tar/2012-01/msg00040.html>.
* gnulib.modules: Add fcntl-h, which defines
HAVE_WORKING_O_NOFOLLOW.
* src/extract.c (open_output_file): Use HAVE_WORKING_O_NOFOLLOW,
not O_NOFOLLOW, when testing whther O_NOFOLLOW works.

This file is a placeholder. It will be replaced with the actual ChangeLog
by make dist.  Run make ChangeLog if you wish to create it earlier.
This commit is contained in:
Paul Eggert
2012-01-17 22:21:52 -08:00
parent 9a82a0215b
commit 6689e8db4f
2 changed files with 3 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ dirname
error
exclude
exitfail
fcntl-h
fdopendir
fdutimensat
fileblocks

View File

@@ -887,7 +887,8 @@ open_output_file (char const *file_name, int typeflag, mode_t mode,
/* If O_NOFOLLOW is needed but does not work, check for a symlink
separately. There's a race condition, but that cannot be avoided
on hosts lacking O_NOFOLLOW. */
if (! O_NOFOLLOW && overwriting_old_files && ! dereference_option)
if (! HAVE_WORKING_O_NOFOLLOW
&& overwriting_old_files && ! dereference_option)
{
struct stat st;
if (fstatat (chdir_fd, file_name, &st, AT_SYMLINK_NOFOLLOW) == 0