Johannes Schindelin <Johannes.Schindelin@xxxxxx> wrote: > On Sat, 20 Oct 2007, Scott Parish wrote: > > > Actually, i didn't test it right, execve() were using the files > > in my cwd. In addition to you patch, you'd need to use execvp() > > instead of execve(). > > Ah, right. I missed that one ;-) > > How about this instead? Uhhh. Its the same, isn't it? Still using execve() which means we will not look at PATH in the final attempt. > exec_cmd.c | 12 ++++++++---- > 1 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/exec_cmd.c b/exec_cmd.c > index 9b74ed2..c928f37 100644 > --- a/exec_cmd.c > +++ b/exec_cmd.c > @@ -36,7 +36,8 @@ int execv_git_cmd(const char **argv) > int i; > const char *paths[] = { current_exec_path, > getenv(EXEC_PATH_ENVIRONMENT), > - builtin_exec_path }; > + builtin_exec_path, > + "" }; > > for (i = 0; i < ARRAY_SIZE(paths); ++i) { > size_t len; > @@ -44,9 +45,12 @@ int execv_git_cmd(const char **argv) > const char *exec_dir = paths[i]; > const char *tmp; > > - if (!exec_dir || !*exec_dir) continue; > + if (!exec_dir) continue; > > - if (*exec_dir != '/') { > + if (!*exec_dir) > + /* try PATH */ > + *git_command = '\0'; > + else if (*exec_dir != '/') { > if (!getcwd(git_command, sizeof(git_command))) { > fprintf(stderr, "git: cannot determine " > "current directory: %s\n", > @@ -81,7 +85,7 @@ int execv_git_cmd(const char **argv) > > len = strlen(git_command); > rc = snprintf(git_command + len, sizeof(git_command) - len, > - "/git-%s", argv[0]); > + "%sgit-%s", *exec_dir ? "/" : "", argv[0]); > if (rc < 0 || rc >= sizeof(git_command) - len) { > fprintf(stderr, > "git: command name given is too long.\n"); > -- > 1.5.3.4.1287.g8b31e -- Shawn. - 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