Explorar el Código

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 hace 13 años
padre
commit
6689e8db4f
Se han modificado 2 ficheros con 3 adiciones y 1 borrados
  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