X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Sat, 12 Jul 2008 11:42:28 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: CoPy to /dev/null fails Message-ID: <20080712094227.GU24644@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <4877BD14 DOT 5000708 AT t-online DOT de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4877BD14.5000708@t-online.de> User-Agent: Mutt/1.5.16 (2007-06-09) Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list 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/