X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Message-ID: Date: Fri, 18 Apr 2008 08:16:10 -0400 From: "Mark J. Reed" To: cygwin AT cygwin DOT com Subject: Re: Directory existence prevents .exe execution In-Reply-To: <20080418093110.GI23852@calimero.vinschen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20080416064211 DOT 40A7F84237 AT pessard DOT research DOT canon DOT com DOT au> <20080416092618 DOT GP23852 AT calimero DOT vinschen DOT de> <48080F30 DOT 2060804 AT cisra DOT canon DOT com DOT au> <20080418093110 DOT GI23852 AT calimero DOT vinschen DOT de> X-Google-Sender-Auth: bf1a2ac5f7e1ac4e X-IsSubscribed: yes 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 I still don't get why you want the Cygwin version of ici to work like the native Windows version. You have a Unix port - that's what the Cygwin version should use as a model. The whole point of Cygwin is to get Unixy behavior... On 4/18/08, Corinna Vinschen wrote: > On Apr 18 13:02, Luke Kendall wrote: > > Corinna Vinschen wrote: > >> On Apr 16 16:42, Luke Kendall wrote: > >> > >>> Suppose that when it does a stat() on "fred", before it decides that > >>> it's found the right file to exec, it should check that "fred" isn't a > >>> > >> > >> A stat() call can't know for what purpose it has been called. Calling > >> stat on "foo", it will return the information for "foo" first, if it > >> exists. Only if it not exists it tries "foo.exe" or "foo.lnk". > >> > > Sure, that makes sense. The stat() call can't know, but the exec() > > certainly does know that it's trying to execute. So I meant that exec() > > could call stat(), and if the file exists but is a directory, reject it as > > a possible thing to execute, and continue with what I assume is the > > existing Windows-specific logic to look for foo.exe or foo.lnk. > > > > What do you think, does the idea make sense? > > Not to me, no. Having three files "foo", "foo.exe" and "foo.lnk" in the > same directory is something you should avoid like hell. The fact that > Windows allows that it just a result of its stubborn suffix-ism. All of > these files would be called "foo" in a POSIX system and you would have a > name collision. Sure, you could change exec() to search for a .exe > explicitly, but what's the gain, except for a border case like yours, > which could easily rectified by changing the sources. You would still > have problems with stat() and other system calls. I can't see anything > good to hide a problem in one call, exec(), while the problem persists > (and must persist) in other system calls. > > > 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/ > > -- Sent from Gmail for mobile | mobile.google.com Mark J. Reed -- 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/