X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=rsh.c;h=5754a230e2c23ce3fea255fccd8726af76c13317;hb=9840906026be807d0882f96396de3a3cdb9fb43e;hp=d66526941fbe45f99e51babc2c55a63b4baa027c;hpb=2b2dabc29f53c5835868029585000ee487cf6cbb;p=git.git diff --git a/rsh.c b/rsh.c index d66526941..5754a230e 100644 --- a/rsh.c +++ b/rsh.c @@ -1,43 +1,10 @@ -#include -#include -#include - +#include "cache.h" #include "rsh.h" #include "quote.h" -#include "cache.h" #define COMMAND_SIZE 4096 -/* - * Append a string to a string buffer, with or without shell quoting. - * Return true if the buffer overflowed. - */ -static int add_to_string(char **ptrp, int *sizep, const char *str, int quote) -{ - char *p = *ptrp; - int size = *sizep; - int oc; - int err = 0; - - if ( quote ) { - oc = sq_quote_buf(p, size, str); - } else { - oc = strlen(str); - memcpy(p, str, (oc >= size) ? size-1 : oc); - } - - if ( oc >= size ) { - err = 1; - oc = size-1; - } - - *ptrp += oc; - **ptrp = '\0'; - *sizep -= oc; - return err; -} - -int setup_connection(int *fd_in, int *fd_out, const 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; @@ -48,6 +15,7 @@ int setup_connection(int *fd_in, int *fd_out, const char *remote_prog, int sizen; int of; int i; + pid_t pid; if (!strcmp(url, "-")) { *fd_in = 0; @@ -91,7 +59,10 @@ int setup_connection(int *fd_in, int *fd_out, const char *remote_prog, if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv)) return error("Couldn't create socket"); - if (!fork()) { + pid = fork(); + if (pid < 0) + return error("Couldn't fork"); + if (!pid) { const char *ssh, *ssh_basename; ssh = getenv("GIT_SSH"); if (!ssh) ssh = "ssh";