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/