From: sandmann AT clio DOT rice DOT edu (Charles Sandmann) Message-Id: <10109152029.AA13731@clio.rice.edu> Subject: Re: A new W2K problem: djtar To: djgpp-workers AT delorie DOT com Date: Sat, 15 Sep 2001 15:29:17 -0500 (CDT) In-Reply-To: <8296-Fri14Sep2001131608+0300-eliz@is.elta.co.il> from "Eli Zaretskii" at Sep 14, 2001 01:16:09 PM X-Mailer: ELM [version 2.5 PL2] Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > 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.