X-Spam-Check-By: sourceware.org To: cygwin AT cygwin DOT com From: mwoehlke Subject: Re: tar, win-path conversion bug Date: Thu, 27 Jul 2006 14:08:57 -0500 Lines: 56 Message-ID: References: <44C6C0B6 DOT 9050206 AT tlinx DOT org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit User-Agent: Thunderbird 1.5.0.4 (X11/20060516) In-Reply-To: <44C6C0B6.9050206@tlinx.org> X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Linda Walsh wrote: > I think I've run into a bug concerning "tar" and the use of > windows format paths. It's not a bug that is difficult to work > around, but it still seems as though it is a bug that someone may > wish to address (in their spare time, of course :-). > > I wanted to save a list of files into a tar archive where the > list was created by a windows-based utility that generated > windows-style pathnames. > > Just to see if it was "supported" at all, I decided to try it with > 1 file first, before attempting the whole archive. > > Created file /tmp/tst that contained 1 filename: > c:\WINDOWS\msagent\chars\brocklee.acs > > My command line was: > tar cvpf /tmp/tst.tar -T /tmp/tst --ignore-case --no-recursion > > My output was: > tar: Removing leading `c:\' from member names > tar: c\:\\WINDOWS\\msagent\\chars\brocklee.acs: Cannot stat: No such > file or directory > tar: Substituting `.' for empty member name > tar: : Cannot stat: No such file or directory > tar: Error exit delayed from previous errors > ---- > ls gives: > > ls -lGg C:\\Windows\\msagent\\chars\\brocklee.acs > -rw-r----- 1 3614596 Jul 5 2002 C:\Windows\msagent\chars\brocklee.acs > > Note in "tar", the backslash before the filename wasn't > doubled as were the other backslashes: > tar: c\:\\WINDOWS\\msagent\\chars\brocklee.acs > ^^ > > If I edit the input file and add an extra "backslash" before > the filename, like: > c:\WINDOWS\msagent\chars\\brocklee.acs > ^ extra backslash > > Then tar "works". Just a guess... '\b' is a valid escape sequence (backspace, or 0x08 in ASCII). None of the other characters after '\'s are valid escape sequences. Therefore it looks like 'tar' treats '\' followed by a character as an escape sequence if it recognizes it, otherwise it treats it literally. The other solution would be to use a sed script to double the '\'s, but as you observed, using POSIX paths would be better. I forget if '-T -' is valid; if it is, you could do something like: cat file_list.txt | xargs -n 1 cygpath -u | tar -T - -- Matthew Ok, so the quotes aren't entirely original. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/