PATH
.
Cygwin translates the contents of some environment variables
like PATH
and TEMP
. Pathnames are
translated to POSIX syntax, and PATH
is converted
from semicolon to colon separation. The variables are passed
in this converted state to spawned processes. Windows programs
will not understand the translated variables.
Further, another serious issue arises in Cygnal due to the interaction
between the existing changes and the PATH
translation. Because drive letters are no longer expanded to
/cygdrive
syntax, a path that is originally
C:\foo;C:\bar
becomes C:/foo:C:/bar
.
Cygnal's code>execvp function treats the search path
as colon-separated, and so the drive letters are not properly
taken into account. Searching appears to work if all the
search places are on the C drive, and the current drive is
C. If the current drive is not C, running programs via
exec or spawn doesn't work, unless absolute paths are used.
Cygnal must leave the environment unmodified, and treat
PATH
as semicolon-separated.
5bb41d641c4658b44e9a8a7047498a028cdc8bb1