Hello. It seems to me that open_warn() in tar-1.23-3.el6 package sometimes reports EUNATCH error. I'm trying to confirm that EUNATCH really came from open() (or its rmt versions). And I noticed that guess_seekable_archive() should preserve the errno variable. Please consider applying this patch in upstream first.
Regards. ---------------------------------------- >From 20c91719e4a50c8cb54fe5c9268240873dd2287a Mon Sep 17 00:00:00 2001 From: Tetsuo Handa <penguin-ker...@i-love.sakura.ne.jp> Date: Wed, 4 Sep 2013 20:27:06 +0900 Subject: [PATCH] Make guess_seekable_archive() preserve the errno variable. new_volume() in src/buffer.c calls guess_seekable_archive() which will modify the errno variable when fstat() failed, making subsequent open_warn() report errno by fstat() rather than errno by rmtopen(). Signed-off-by: Tetsuo Handa <penguin-ker...@i-love.sakura.ne.jp> --- src/buffer.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/buffer.c b/src/buffer.c index 97084ab..8b5d0e9 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -406,6 +406,7 @@ static void guess_seekable_archive (void) { struct stat st; + const int err = errno; if (subcommand_option == DELETE_SUBCOMMAND) { @@ -430,6 +431,7 @@ guess_seekable_archive (void) seekable_archive = S_ISREG (st.st_mode); else seekable_archive = false; + errno = err; } /* Open an archive named archive_name_array[0]. Detect if it is -- 1.7.1