From 86257aa324d04694408ad806989690979456f29a Mon Sep 17 00:00:00 2001 From: Christian Couder Date: Mon, 11 Sep 2006 06:59:22 +0200 Subject: [PATCH] Move add_to_string to "quote.c" and make it extern. So that this function may be used in places other than "rsh.c". Signed-off-by: Christian Couder Signed-off-by: Junio C Hamano --- quote.c | 29 +++++++++++++++++++++++++++++ quote.h | 6 ++++++ rsh.c | 31 +------------------------------ 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/quote.c b/quote.c index a38786c177..e3a4d4aef3 100644 --- a/quote.c +++ b/quote.c @@ -106,6 +106,35 @@ char *sq_quote_argv(const char** argv, int count) return buf; } +/* + * Append a string to a string buffer, with or without shell quoting. + * Return true if the buffer overflowed. + */ +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, (size <= oc) ? size - 1 : oc); + } + + if (size <= oc) { + err = 1; + oc = size - 1; + } + + *ptrp += oc; + **ptrp = '\0'; + *sizep -= oc; + return err; +} + char *sq_dequote(char *arg) { char *dst = arg; diff --git a/quote.h b/quote.h index a6c4611c25..1a29e791dd 100644 --- a/quote.h +++ b/quote.h @@ -33,6 +33,12 @@ extern void sq_quote_print(FILE *stream, const char *src); extern size_t sq_quote_buf(char *dst, size_t n, const char *src); extern char *sq_quote_argv(const char** argv, int count); +/* + * Append a string to a string buffer, with or without shell quoting. + * Return true if the buffer overflowed. + */ +extern int add_to_string(char **ptrp, int *sizep, const char *str, int quote); + /* This unwraps what sq_quote() produces in place, but returns * NULL if the input does not look like what sq_quote would have * produced. diff --git a/rsh.c b/rsh.c index 07166addd9..f34409e1bc 100644 --- a/rsh.c +++ b/rsh.c @@ -8,36 +8,7 @@ #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;