This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: execvp* and spawnvp* react differently to same PATH environment variable


On 10/7/2019 4:51 PM, donpedro.tdcadsl.dk via cygwin wrote:
> Hi all,
> 
> While working on something i noticed that execvp* and spawnvp* behave differently with regards to $PATH, which i think is not correct.
> 
> ----------------------------------------------
> 
> 1) The execvp* functions are called like this:
> 
> return spawnve ( _P_OVERLAY | _P_PATH_TYPE_EXEC ,
>     find_exec ( file , buf , "PATH" , FE_NNF ) ? : "" ,
>     argv , envp );
> 
> This calls find_exec() with FE_NNF, which causes the path to be NULL if not found in $PATH.
> 
> This later causes cygwin to fail correctly if the program is not in $PATH.
> 
> ----------------------------------------------
> 
> 2) The spawnvp* functions are called like this:
> 
> return spawnve (mode | _P_PATH_TYPE_EXEC, find_exec (file, buf), argv, cur_environ ());
> 
> This does _not_ calls find_exec() with FE_NNF which causes the path to be the posix form, as it is not found in path.
> 
> This later causes cygwin to find the program even though it was not in $PATH which seems wrong.
> 
> ----------------------------------------------
> 
> This seems like a bug in spawnvp* functions unless i am missing something?

I think you're probably right.  The use of FE_NNF in execvp* was introduced in 
commit 6d63272b.  I suspect it was just an oversight that the spawvp* functions 
weren't changed in the same way.  I'll send a patch to the cygwin-patches list 
to fix this.  When Corinna returns, she can tell us whether there's some reason 
that spawnvp should be different from execvp.

Ken

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]