From 4852f7232b7a83fbd1b745520181bd67bf95911b Mon Sep 17 00:00:00 2001 From: Martin Sivak Date: Wed, 3 Aug 2005 17:15:42 +0200 Subject: [PATCH] Use GIT_SSH environment to specify alternate ssh binary. [jc: I ended up rewriting Martin's patch due to whitespace breakage, but the credit goes to Martin for doing the initial patch to identify what needs to be changed.] Signed-off-by: Martin Sivak Signed-off-by: Junio C Hamano --- connect.c | 11 +++++++++-- rsh.c | 8 +++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/connect.c b/connect.c index 8f4d99aef..a6657b138 100644 --- a/connect.c +++ b/connect.c @@ -382,8 +382,15 @@ int git_connect(int fd[2], char *url, const char *prog) close(pipefd[0][1]); close(pipefd[1][0]); close(pipefd[1][1]); - if (protocol == PROTO_SSH) - execlp("ssh", "ssh", host, command, NULL); + if (protocol == PROTO_SSH) { + const char *ssh = getenv("GIT_SSH") ? : "ssh"; + const char *ssh_basename = strrchr(ssh, '/'); + if (!ssh_basename) + ssh_basename = ssh; + else + ssh_basename++; + execlp(ssh, ssh_basename, host, command, NULL); + } else execlp("sh", "sh", "-c", command, NULL); die("exec failed"); diff --git a/rsh.c b/rsh.c index fe87e581d..bcb1c80d8 100644 --- a/rsh.c +++ b/rsh.c @@ -56,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]; -- 2.30.2