浏览代码

BUG: Shell escaping needs to write % as %% for VS IDE.

Brad King 18 年之前
父节点
当前提交
73197eaefa
共有 1 个文件被更改,包括 23 次插入0 次删除
  1. 23 0
      Source/kwsys/System.c

+ 23 - 0
Source/kwsys/System.c

@@ -287,6 +287,15 @@ static int kwsysSystem_Shell__GetArgumentSize(const char* in,
         ++size;
         }
       }
+    else if(*c == '%')
+      {
+      if(flags & kwsysSystem_Shell_Flag_VSIDE)
+        {
+        /* In a VS IDE a percent is written %% so we need one extra
+           characters.  */
+        size += 1;
+        }
+      }
     }
 
   /* Check whether the argument needs surrounding quotes.  */
@@ -432,6 +441,20 @@ static char* kwsysSystem_Shell__GetArgument(const char* in, char* out,
         *out++ = '#';
         }
       }
+    else if(*c == '%')
+      {
+      if(flags & kwsysSystem_Shell_Flag_VSIDE)
+        {
+        /* In a VS IDE a percent is written %%.  */
+        *out++ = '%';
+        *out++ = '%';
+        }
+      else
+        {
+        /* Otherwise a percent is written just %. */
+        *out++ = '%';
+        }
+      }
     else
       {
       /* Store this character.  */