Mail Archives: djgpp-workers/2001/09/16/03:17:39
On Sat, 15 Sep 2001, Charles Sandmann wrote:
> > from epunzip.c:
> > epoutfile = open("/dev/null",
> > O_WRONLY | O_BINARY | O_CREAT | O_EXCL,
> >
> > This fails inside `open', since it sees O_CREAT, decides that the file
> > should be created anew, calls __file_exists to see if /dev/null
> > exists, and since __file_exists returns non-zero, `open' fails.
> >
> > This seems like a bug in epunzip.c, doesn't it? Why should it insist
> > on creating /dev/null?
> >
> > OTOH, I don't understand how does it work on other platforms? Oh, I
> > see: __file_exists fails for devices on every other platform. Does
> > this form of `open' work on GNU/Linux?
>
> This open does not work on other Unix systems I tested. The O_CREAT
> isn't the problem it the O_EXCL - which fails if the specified file
> exists. This is a bug in epunzip (2 places). I don't think we
> should need O_CREAT either, but O_EXCL is the problem.
I agree.
Esa, is there any reason why I shouldn't remove O_EXCL from those two
calls in epunzip.c?
- Raw text -