X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=rsh.c;h=5754a230e2c23ce3fea255fccd8726af76c13317;hb=2eff14259ea4035dc5f8a18f5998e88dd4da207e;hp=64c48091cb32af1d8c5b2ec145ad660ab9f0a75f;hpb=f336af1711f86e8b00e85eec3b3f73f7a8e4bed0;p=git.git diff --git a/rsh.c b/rsh.c index 64c48091c..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; @@ -68,7 +36,7 @@ int setup_connection(int *fd_in, int *fd_out, const char *remote_prog, if (!path) { return error("Bad URL: %s", url); } - /* $GIT_RSH "env GIR_DIR= " */ + /* $GIT_RSH "env GIT_DIR= " */ sizen = COMMAND_SIZE; posn = command; of = 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";