bug-tar
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-tar] tar-1.25: test 39 fails on FreeBSD


From: Paul Eggert
Subject: Re: [Bug-tar] tar-1.25: test 39 fails on FreeBSD
Date: Tue, 23 Nov 2010 13:03:39 -0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101027 Thunderbird/3.0.10

On 11/23/10 08:16, Joerg Schilling wrote:

> The POSIX standard requires errno to be ELOOP in this case.

Quite right.  And I see that this incompatibility is not
fixed in FreeBSD 9-current, at least according to the
published manual page.  Christian, would you please report this
to the FreeBSD folks, if they don't know about it already?

Christian's workaround is pretty easy, so I installed this:

>From ce6e292e2e3601ac690a1e3e82d91ef5e3f5a7c8 Mon Sep 17 00:00:00 2001
From: Paul Eggert <address@hidden>
Date: Tue, 23 Nov 2010 12:57:47 -0800
Subject: [PATCH] tar: work around FreeBSD symlink incompatibility with POSIX

* src/extract.c (maybe_recoverable): Treat EMLINK like ELOOP, for
FreeBSD.  Problem reported by Christian Weisgerber in
<http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00080.html>.
---
 src/extract.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/extract.c b/src/extract.c
index 6711f87..c52c9ce 100644
--- a/src/extract.c
+++ b/src/extract.c
@@ -609,6 +609,9 @@ maybe_recoverable (char *file_name, bool regular, bool 
*interdir_made)
   switch (e)
     {
     case ELOOP:
+      /* With open ("symlink", O_NOFOLLOW|...), POSIX says errno == ELOOP,
+        but FreeBSD through at least 8.1 uses errno == EMLINK.  */
+    case EMLINK:
       if (! regular
          || old_files_option != OVERWRITE_OLD_FILES || dereference_option)
        break;
-- 
1.7.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]