Skip to content

Commit

Permalink
Move add_to_string to "quote.c" and make it extern.
Browse files Browse the repository at this point in the history
So that this function may be used in places other than "rsh.c".

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Christian Couder authored and Junio C Hamano committed Sep 11, 2006
1 parent 8be6835 commit 86257aa
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 30 deletions.
29 changes: 29 additions & 0 deletions quote.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 6 additions & 0 deletions quote.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
31 changes: 1 addition & 30 deletions rsh.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 86257aa

Please sign in to comment.