On Tue, May 18, 2004 at 10:14:08PM +0300, Ksenia Marasanova wrote:
> try:
> fd = os.open(filename, flags)
> except OSError, err:
> - if err.strerror == errno.EAGAIN:
> + if err.strerror == errno.EAGAIN or err.errno ==
> errno.EEXIST:
> # Filename collision -- try again
> counter += 1
> else:
>
> So there seems to be two differences on Panther:
>
> - err.strerror contains the actual error text "File Exists" and not the
> number
> - err.errno is different
I think the code was completely incorrect. open() with the O_CREAT
and O_EXCL flags is supposed to return EEXIST if the file already
exists. I checked both the Linux and FreeBSD manual pages. Neither
page says anything about EAGAIN. Using 'err.strerror' instead of
'err.errno' is also wrong. So, I think the code should be simply:
...
if err.errno == errno.EEXIST:
...
Thanks for reporting this bug.
Neil