зеркало из https://github.com/microsoft/git.git
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:
Родитель
977ed47d86
Коммит
f336af1711
46
rsh.c
46
rsh.c
|
@ -1,52 +1,16 @@
|
|||
#include "rsh.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include "rsh.h"
|
||||
#include "quote.h"
|
||||
#include "cache.h"
|
||||
|
||||
#define COMMAND_SIZE 4096
|
||||
|
||||
/*
|
||||
* Write a shell-quoted version of a string into a buffer, and
|
||||
* return bytes that ought to be output excluding final null.
|
||||
*/
|
||||
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.
|
||||
* 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)
|
||||
{
|
||||
|
@ -56,7 +20,7 @@ static int add_to_string(char **ptrp, int *sizep, const char *str, int quote)
|
|||
int err = 0;
|
||||
|
||||
if ( quote ) {
|
||||
oc = shell_quote(p, size, str);
|
||||
oc = sq_quote_buf(p, size, str);
|
||||
} else {
|
||||
oc = strlen(str);
|
||||
memcpy(p, str, (oc >= size) ? size-1 : oc);
|
||||
|
|
Загрузка…
Ссылка в новой задаче