Ver Fonte

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.
Paul Eggert há 13 anos atrás
pai
commit
6689e8db4f
2 ficheiros alterados com 3 adições e 1 exclusões
  1. 1 0
      gnulib.modules
  2. 2 1
      src/extract.c

+ 1 - 0
gnulib.modules

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

+ 2 - 1
src/extract.c

@@ -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