Use a default path in exec*p*() if PATH is unset?

Christian Franke Christian.Franke@t-online.de
Tue Apr 11 11:11:00 GMT 2017


Thomas Wolff wrote:
> Am 10.04.2017 um 22:29 schrieb Christian Franke:
>> A few years after https://cygwin.com/ml/cygwin/2014-09/msg00204.html
>> I found another use case of an unset PATH variable:
>>
>> The configure script from mandoc (http://mdocml.bsd.lv/) uses this 
>> interesting approach to query default CC command from make:
>>
>> CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -sf -`
> Why does it `env -i` at all?

I guess because make result should not depend on environment. I agree 
that 'env -i' is probably to much, 'env -u CC' would be enough.


> (And why does it prepend a \ to the output?)

It doesn't. The extra \\ is required because `...` is used instead of 
$(...):

$ printf "all:\\n\\t@echo \\\$(CC)\\n"
all:
         @echo \$(CC)

$ CC=$(printf "all:\\n\\t@echo \\\$(CC)\\n" > /dev/tty)
all:
         @echo \$(CC)

$ CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" > /dev/tty`
all:
         @echo $(CC)


> It seems this scriptlet has an issue, rather than adapting core 
> behaviour for it.

Of course Cygwin shouldn't be adapted solely for this single case.
But it possibly Cygwin should be adapted to the existing practice of 
various other open source *ix systems.

Interestingly the approach in newlib/libc/posix/execvp.c differs from 
Cygwin and others:
execvp() with PATH unset calls execv(). This has the same effect as 
execvp() with PATH set to current directory only.

Christian


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