This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: CoPy to /dev/null fails
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Sat, 12 Jul 2008 11:42:28 +0200
- Subject: Re: CoPy to /dev/null fails
- References: <4877BD14.5000708@t-online.de>
- Reply-to: cygwin at cygwin dot com
On Jul 11 22:05, Christian Franke wrote:
> Hi,
>
> this works on Linux:
>
> $ cp file /dev/null
>
> but fails on Cygwin 1.5.25-15:
>
> $ cp file /dev/null
> cp: cannot create regular file `/dev/null': Invalid request code
>
>
> /dev/null exists, so /bin/cp opens it with O_TRUNC only. But this fails
> with EBADRQC (54):
>
> fd = open("/dev/null", O_WRONLY|O_TRUNC, .)
>
> According to strace, Cygwin calls:
>
> h = CreateFile("NUL", ., ., TRUNCATE_EXISTING, ., .);
>
> which fails.
>
>
> Interestingly, this works:
>
> fd = open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, .);
>
> Cygwin calls:
>
> h = CreateFile("NUL", ., ., CREATE_ALWAYS, ., .);
>
> Apparently a subtle (and IMO undocumented) difference between
> TRUNCATE_EXISTING and CREATE_ALWAYS even when file exists.
That's a weirdness of the Win32 CreateFile call used in 1.5.25 when
accessing NUL. This will be fixed in 1.7.0. It uses
NtCreateFile("\Device\Null") which doesn't have that problem.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/