This is the mail archive of the
mailing list for the Cygwin project.
Re: Directory existence prevents .exe execution
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 Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html