Subject: [PATCH 2/3] Make rsh.c use sq_quote_buf()

From: "H. Peter Anvin" <[email-masked]>
Date: Mon, 10 Oct 2005 13:50:06 -0700

Make rsh.c use sq_quote_buf()

---
commit 16e46159b554116a7d95a206913fcdf7e79e07d0
tree c075951382add702148d7a2c2b4e0298efab8082
parent cc114823f72bd8d912abf7f7a7515853c554a9f3
author Peter Anvin <[email-masked]> Mon, 10 Oct 2005 12:23:44 -0700
committer Peter Anvin <[email-masked]> Mon, 10 Oct 2005 12:23:44 -0700

 rsh.c |   46 +++++-----------------------------------------
 1 files changed, 5 insertions(+), 41 deletions(-)

diff --git a/rsh.c b/rsh.c
index bad5cff..8278eab 100644
--- a/rsh.c
+++ b/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, in
 	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);