Make rsh.c use sq_quote_buf()

Make rsh.c use sq_quote_buf()

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
H. Peter Anvin 2005-10-10 14:46:14 -07:00 committed by Junio C Hamano
parent 977ed47d86
commit f336af1711

46
rsh.c
View File

@ -1,52 +1,16 @@
#include "rsh.h"
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include "rsh.h"
#include "quote.h"
#include "cache.h" #include "cache.h"
#define COMMAND_SIZE 4096 #define COMMAND_SIZE 4096
/* /*
* Write a shell-quoted version of a string into a buffer, and * Append a string to a string buffer, with or without shell quoting.
* return bytes that ought to be output excluding final null. * Return true if the buffer overflowed.
*/
static int shell_quote(char *buf, int nmax, const char *str)
{
char ch;
int nq;
int oc = 0;
while ( (ch = *str++) ) {
nq = 0;
if ( strchr(" !\"#$%&\'()*;<=>?[\\]^`{|}", ch) )
nq = 1;
if ( nq ) {
if ( nmax > 1 ) {
*buf++ = '\\';
nmax--;
}
oc++;
}
if ( nmax > 1 ) {
*buf++ = ch;
nmax--;
}
oc++;
}
if ( nmax )
*buf = '\0';
return oc;
}
/*
* Append a string to a string buffer, with or without quoting. Return true
* if the buffer overflowed.
*/ */
static int add_to_string(char **ptrp, int *sizep, const char *str, int quote) static int add_to_string(char **ptrp, int *sizep, const char *str, int quote)
{ {
@ -56,7 +20,7 @@ static int add_to_string(char **ptrp, int *sizep, const char *str, int quote)
int err = 0; int err = 0;
if ( quote ) { if ( quote ) {
oc = shell_quote(p, size, str); oc = sq_quote_buf(p, size, str);
} else { } else {
oc = strlen(str); oc = strlen(str);
memcpy(p, str, (oc >= size) ? size-1 : oc); memcpy(p, str, (oc >= size) ? size-1 : oc);