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:
parent
977ed47d86
commit
f336af1711
46
rsh.c
46
rsh.c
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user