wcmd: ignore start and end quotes (try 2)

André Hentschel nerv at dawncrow.de
Mon Aug 24 13:17:51 CDT 2009


ignore start and end quotes, as we handle strings with spaces correct anyway.
It also fixes Bug 19778

try 2: move to function
---
 programs/cmd/builtins.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index b544a37..f3b9716 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -2043,6 +2043,24 @@ static int WCMD_setshow_sortenv(const WCHAR *s, const WCHAR *stub)
   return displayedcount;
 }
 
+/*************************************************************************
+ * WCMD_strip_quotes
+ *
+ *	Remove first and last quote WCHARacters, preserving all other text
+ */
+static void WCMD_strip_quotes(WCHAR *s) {
+    UINT len=0;
+
+    if (!s) return;
+
+    len = strlenW(s);
+    if (len>=2 && *s=='\"' && s[len-1]=='\"') {
+        WCHAR *src = s + 1, *dest = s;
+        s[len-1]='\0';
+        while((*dest++=*src++) != '\0');
+    }
+}
+
 /****************************************************************************
  * WCMD_setshow_env
  *
@@ -2072,6 +2090,7 @@ void WCMD_setshow_env (WCHAR *s) {
 
     s += 2;
     while (*s && *s==' ') s++;
+    WCMD_strip_quotes(s);
 
     /* If no parameter, or no '=' sign, return an error */
     if (!(*s) || ((p = strchrW (s, '=')) == NULL )) {
@@ -2096,6 +2115,8 @@ void WCMD_setshow_env (WCHAR *s) {
 
   } else {
     DWORD gle;
+
+    WCMD_strip_quotes(s);
     p = strchrW (s, '=');
     if (p == NULL) {
       env = GetEnvironmentStrings ();
-- 

Best Regards, André Hentschel



More information about the wine-patches mailing list