Sridhar Ratnakumar <sridh...@activestate.com> added the comment:

On 2010-06-14, at 10:43 AM, Lars Gustäbel wrote:

> Lars Gustäbel <l...@gustaebel.de> added the comment:
> 
> a) The point is: the operation simply wouldn't fail on a case-sensitive 
> filesystem. There is no platform-specific or otherwise special code in 
> TarFile.makefile(). It simply tries to extract the file and the filesystem 
> layer says no, because it believes there is already a directory with the same 
> name. The same thing happens on a Windows filesystem BTW. The problem boils 
> down to this:
> 
>>>> os.mkdir("A")
>>>> open("a", "w")
> IOError: [Errno 21] Is a directory: 'a'
> 
> And IIUC, the Mac OS X filesystem is case-preserving(!) by default, with the 
> possibility to create new filesystems as case-sensitive. As I said, my Mac OS 
> X expertise is almost nonexistent, you might as well ask someone with more 
> knowledge on Python on Mac OS X.

Ah, I see. I didn't know about this compatibility quirk.

> b) I don't know what Finder does with that archive, but I cannot think of any 
> other way than either not to extract the file at all or to extract it under a 
> different name or to remove the directory first and then extract the file. 
> Could you please examine how Finder extracts this archive?

I was wrong about Finder extracting the tarball; actually I used the Finder on 
my macbook (10.6), where `open("a", "w")` succeeds. Whereas this issue seems to 
be reproducible in 10.5 or 10.4 only.

I did try to use `tar` this time, and it failed:

$ tar zxf hntool-0.1.1.tar.gz 
tar: hntool-0.1.1/hntool: Cannot open: File exists
tar: Error exit delayed from previous errors

> c) IMHO the IOError exception is perfectly fine, because this kind of issue 
> is outside of tarfile's scope. We hit a filesystem limit here. Also, there is 
> no decent way to work around this problem, and I think there is no need to 
> either.

In this case, yes ... I agree.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue8958>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to