execlp/execvp needs case-correct PATH

Thomas Wolff towo@towo.net
Tue Feb 10 19:14:00 GMT 2015

Am 10.02.2015 um 10:27 schrieb Corinna Vinschen:
> On Feb  9 21:49, Thomas Wolff wrote:
>> Am 09.02.2015 um 11:17 schrieb Corinna Vinschen:
>>> On Feb  9 00:04, Thomas Wolff wrote:
>>>> With a Windows case sensitive file system (and according mount flags
>>>> for /cygdrive), the PATH does not properly reflect casing of the actual
>>>> directories (e.g. C:\WINDOWS vs. C:\Windows, thanks MS...).
>>>> However, the shell finds programs anyway, like e.g. notepad.
>>>> The exec*p system calls, on the other hand, do not find a program in this
>>>> case as demonstrated by the attached test program.
>>>> This is in contrast to the Linux (and POSIX?) manual page which claims
>>>> „The execlp(), execvp(), and execvpe() functions duplicate the actions
>>>> of the shell in searching for an executable file …“
>>> ...
>> Sorry, I forgot one detail: I added /cygdrive/c/Windows/System32 to my path
>> so the shell will find it, but yet execlp does not find it.
> Which makes sense, given that notepad is not in C:\Windows\System32, but in C:\Windows.
On my systems (Windows 7 Professional/Ultimate) it’s in both C:\Windows 
and C:\Windows\System32
(otherwise the shell wouldn’t have found it after adding to the path).

However, I could resolve the issue partly by putting
/cygdrive/c/Windows (or ../System32) in the path *before* the bogus
/cygdrive/c/WINDOWS - weird, but this way exec*p works.

With the old setting (bogus first in path), apparently/assumedly exec*p 
somehow finds the file in /cygdrive/c/WINDOWS but then cannot start it 
from there because of the case mis-match.
There’s still the inconsistency with shell behaviour.


Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.

Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

More information about the Cygwin mailing list