X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fextract.c;fp=src%2Fextract.c;h=aaea56ed3abcfcfb2bfde356715f6133e22e4fae;hb=1a44d77d50f4fb37c0410eed04b82303624ea2ec;hp=6711f8736951a3a541d85dec9c845a9bc5e38f97;hpb=dda6367c9eac71da8f2ab1c60b3df60f19ce4755;p=debian%2Ftar diff --git a/src/extract.c b/src/extract.c index 6711f873..aaea56ed 100644 --- a/src/extract.c +++ b/src/extract.c @@ -609,6 +609,18 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made) switch (e) { case ELOOP: + + /* With open ("symlink", O_NOFOLLOW|...), POSIX says errno == ELOOP, + but some operating systems do not conform to the standard. */ +#ifdef EFTYPE + /* NetBSD uses errno == EFTYPE; see . */ + case EFTYPE: +#endif + /* FreeBSD 8.1 uses errno == EMLINK. */ + case EMLINK: + /* Tru64 5.1B uses errno == ENOTSUP. */ + case ENOTSUP: + if (! regular || old_files_option != OVERWRITE_OLD_FILES || dereference_option) break;