X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=rsh.c;h=8eea1d0233164a5d0d4977593538289dd93f722d;hb=001d4a27dbfaaa59c25dc35dafc69bd9b9bc21d3;hp=4d6a90bf6c1b290975fb2ac22f25979be56cb476;hpb=6eb7ed5403b7d57d5ed7e30d0cd0b312888ee95c;p=git.git diff --git a/rsh.c b/rsh.c index 4d6a90bf..8eea1d02 100644 --- a/rsh.c +++ b/rsh.c @@ -1,13 +1,14 @@ #include "rsh.h" #include +#include #include #include "cache.h" #define COMMAND_SIZE 4096 -int setup_connection(int *fd_in, int *fd_out, char *remote_prog, +int setup_connection(int *fd_in, int *fd_out, const char *remote_prog, char *url, int rmt_argc, char **rmt_argv) { char *host; @@ -24,19 +25,21 @@ int setup_connection(int *fd_in, int *fd_out, char *remote_prog, } host = strstr(url, "//"); - if (!host) { - return error("Bad URL: %s", url); + if (host) { + host += 2; + path = strchr(host, '/'); + } else { + host = url; + path = strchr(host, ':'); } - host += 2; - path = strchr(host, '/'); if (!path) { return error("Bad URL: %s", url); } *(path++) = '\0'; /* ssh 'cd /; stdio-pull ' */ snprintf(command, COMMAND_SIZE, - "cd /%s; SHA1_FILE_DIRECTORY=objects %s", - path, remote_prog); + "%s='/%s' %s", + GIT_DIR_ENVIRONMENT, path, remote_prog); posn = command + strlen(command); for (i = 0; i < rmt_argc; i++) { *(posn++) = ' '; @@ -47,7 +50,7 @@ int setup_connection(int *fd_in, int *fd_out, char *remote_prog, } } strcpy(posn, " -"); - if (socketpair(AF_LOCAL, SOCK_STREAM, 0, sv)) { + if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv)) { return error("Couldn't create socket"); } if (!fork()) {