On Wed, Mar 28, 2012 at 05:57:04PM -0400, Jeff King wrote: > +static int exists_in_PATH(const char *file) > +{ > + const char *p = getenv("PATH"); > + struct strbuf buf = STRBUF_INIT; > + > + if (!p || !*p) > + return 0; One thing to note: real execvp, when it sees a NULL $PATH, will fill in some OS-dependent default path. My linux box has _PATH_DEFPATH, but I don't know how portable that is (I can't find anything useful in POSIX). > No tests yet. I'll post some output on that in a minute. So here is a quick test script to show the output for a couple different cases. Should this be a real test script? A lot of what is being tested is the actual stderr output in many cases, which we tend to try not to include in tests. -- >8 -- #!/bin/sh rm -rf bin .git # bin/broken is a PATH directory that cannot be searched # bin/ok can be searched, but has a broken entry mkdir bin bin/broken bin/ok chmod -x bin/broken # The "yes" command lets us know when things are working. cat >bin/ok/git-yes <<\EOF #!/bin/sh echo yes EOF chmod +x bin/ok/git-yes # and the "no" command is broken, and should be reported as EACCES >bin/ok/git-no git init -q git config alias.alias-yes yes git config alias.alias-no no PATH=$PWD/bin/broken:$PWD/bin/ok:$PATH set -x git does-not-exist git yes git no git alias-yes git alias-no -- >8 -- The output I get is: # stock git + git does-not-exist fatal: cannot exec 'git-does-not-exist': Permission denied + git yes yes + git no fatal: cannot exec 'git-no': Permission denied + git alias-yes fatal: cannot exec 'git-alias-yes': Permission denied + git alias-no fatal: cannot exec 'git-alias-no': Permission denied # my earlier patches to do alias lookup after EACCES + git does-not-exist Failed to run command 'does-not-exist': Permission denied + git yes yes + git no Failed to run command 'no': Permission denied + git alias-yes yes + git alias-no Expansion of alias 'alias-no' failed; 'no': Permission denied # this patch + git does-not-exist git: 'does-not-exist' is not a git command. See 'git --help'. + git yes yes + git no fatal: cannot exec 'git-no': Permission denied + git alias-yes yes + git alias-no fatal: cannot exec 'git-no': Permission denied -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html