execlp/execvp needs case-correct PATH

Corinna Vinschen corinna-cygwin@cygwin.com
Mon Feb 9 10:17:00 GMT 2015


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 …“

I can't reproduce this.  If I change my cygdrive mounts to
case-sensitive, my shell doesn't start notepad anymore:

  $ cat /etc/fstab
  none /mnt cygdrive binary,posix=1,user 0 0
  $ echo $SHELL
  /bin/tcsh
  $ echo $path
  /usr/bin /mnt/c/WINDOWS/system32 /mnt/c/WINDOWS /mnt/c/WINDOWS/System32/Wbem /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0 /usr/lib/lapack
  $ notepad
  notepad: Command not found.
  $ /mnt/c/Windows/notepad
  <works>
  $


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20150209/630db640/attachment.sig>


More information about the Cygwin mailing list