diff options
Diffstat (limited to 'send-pack.c')
-rw-r--r-- | send-pack.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/send-pack.c b/send-pack.c index af57d4028..99cb84b2c 100644 --- a/send-pack.c +++ b/send-pack.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "pkt-line.h" static const char send_pack_usage[] = "git-send-pack [--exec=other] destination [heads]*"; @@ -8,13 +9,16 @@ static int send_pack(int in, int out) { for (;;) { static char buffer[1000]; - int ret = read(in, buffer, sizeof(buffer)); - if (ret > 0) { - write(1, buffer, ret); + int len; + + len = packet_read_line(in, buffer, sizeof(buffer)); + if (len > 0) { + write(2, buffer, len); continue; } break; } + packet_flush(out); close(out); return 0; } @@ -77,7 +81,7 @@ static int setup_connection(int fd[2], char *url, char **heads) if (host) execlp("ssh", "ssh", host, command, NULL); else - execlp(host, command, NULL); + execlp("sh", "sh", "-c", command, NULL); die("exec failed"); } fd[0] = pipefd[0][0]; |