| delorie.com/archives/browse.cgi | search |
| X-Authentication-Warning: | new-smtp2.ihug.com.au: Host p58-max49.syd.ihug.com.au [203.173.144.122] claimed to be acceleron |
| Message-ID: | <00b601c11d4e$1fb7ac30$0a02a8c0@acceleron> |
| From: | "Andrew Cottrell" <acottrel AT ihug DOT com DOT au> |
| To: | "Charles Sandmann" <sandmann AT clio DOT rice DOT edu>, <djgpp-workers AT delorie DOT com> |
| Cc: | "Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il> |
| References: | <10108042310 DOT AA13147 AT clio DOT rice DOT edu> |
| Subject: | Re: Windows 2000 /dev/null permission query |
| Date: | Sun, 5 Aug 2001 11:29:50 +1000 |
| MIME-Version: | 1.0 |
| X-Priority: | 3 |
| X-MSMail-Priority: | Normal |
| X-Mailer: | Microsoft Outlook Express 5.50.4522.1200 |
| X-MimeOLE: | Produced By Microsoft MimeOLE V5.50.4522.1200 |
| Reply-To: | djgpp-workers AT delorie DOT com |
> > In particular, open on /dev/null fails using O_TRUNC
>
> In this case we attempt a write to the device of 0 bytes. This
> write fails with dos error code of 5 = Access denied.
>
> It appears to me the easiest fix for this is in open.c, which has a
> section which looks like:
>
> if ((oflag & O_TRUNC) && !should_create)
> if (_write(fd, 0, 0) < 0)
> return -1;
>
> would be to ignore the return code from _write in this case:
>
> if ((oflag & O_TRUNC) && !should_create)
> _write(fd, 0, 0);
>
> Comments? Can anyone think of a real case we would expect a write of 0
> bytes to fail and we would want that to be fatal to the open? The
> handle is open and allocated...
Charles you are spot on with this one.
Tested this with a small test app that is effectively one call to
system("djecho foo >nul\0") and the patch above fixes the problem. I will
try this patch on LIBC and re-build packages again and re-test.
Andrew
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |