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:
@@ -12,6 +12,7 @@ dirname
|
||||
error
|
||||
exclude
|
||||
exitfail
|
||||
fcntl-h
|
||||
fdopendir
|
||||
fdutimensat
|
||||
fileblocks
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user