X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=rsh.c;h=bcb1c80d84b77e04bf843c2b38592284760ae165;hb=0d62fb5672c7b6e3fc6c5418d61ff39bf6034741;hp=5615c74e7d5f4e5f9d93c0f90c6f57fe8b41442f;hpb=479346adc5ebb099121063d4c06da30093ed9b3b;p=git.git diff --git a/rsh.c b/rsh.c index 5615c74e..bcb1c80d 100644 --- a/rsh.c +++ b/rsh.c @@ -41,6 +41,7 @@ int setup_connection(int *fd_in, int *fd_out, const char *remote_prog, snprintf(command, COMMAND_SIZE, "%s='%s' %s", GIT_DIR_ENVIRONMENT, path, remote_prog); + *path = '\0'; posn = command + strlen(command); for (i = 0; i < rmt_argc; i++) { *(posn++) = ' '; @@ -55,10 +56,16 @@ int setup_connection(int *fd_in, int *fd_out, const char *remote_prog, return error("Couldn't create socket"); } if (!fork()) { + const char *ssh = getenv("GIT_SSH") ? : "ssh"; + const char *ssh_basename = strrchr(ssh, '/'); + if (!ssh_basename) + ssh_basename = ssh; + else + ssh_basename++; close(sv[1]); dup2(sv[0], 0); dup2(sv[0], 1); - execlp("ssh", "ssh", host, command, NULL); + execlp(ssh, ssh_basename, host, command, NULL); } close(sv[0]); *fd_in = sv[1];