[cmake-commits] king committed System.c 1.3 1.4 System.h.in 1.2 1.3

cmake-commits at cmake.org cmake-commits at cmake.org
Wed Oct 4 18:52:26 EDT 2006


Update of /cvsroot/CMake/CMake/Source/kwsys
In directory public:/mounts/ram/cvs-serv22392/Source/kwsys

Modified Files:
	System.c System.h.in 
Log Message:
ENH: Adding Shell_Flag_EchoWindows option to setup escapes for arguments to the native echo command in a shell.  This special case is needed to avoid adding quotes when passing text to echo in a native windows shell which does no command line parsing at all.


Index: System.h.in
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/kwsys/System.h.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- System.h.in	27 Sep 2006 17:43:46 -0000	1.2
+++ System.h.in	4 Oct 2006 22:52:24 -0000	1.3
@@ -31,6 +31,7 @@
 #define kwsysSystem_Shell_Flag_e                     kwsys_ns(System_Shell_Flag_e)
 #define kwsysSystem_Shell_Flag_Make                  kwsys_ns(System_Shell_Flag_Make)
 #define kwsysSystem_Shell_Flag_VSIDE                 kwsys_ns(System_Shell_Flag_VSIDE)
+#define kwsysSystem_Shell_Flag_EchoWindows           kwsys_ns(System_Shell_Flag_EchoWindows)
 #define kwsysSystem_Shell_Flag_AllowMakeVariables    kwsys_ns(System_Shell_Flag_AllowMakeVariables)
 
 #if defined(__cplusplus)
@@ -78,12 +79,15 @@
       Shell_Flag_Make.  */
   kwsysSystem_Shell_Flag_VSIDE              = (1<<1),
 
+  /** In a windows whell the argument is being passed to "echo".  */
+  kwsysSystem_Shell_Flag_EchoWindows        = (1<<2),
+
   /** Make variable reference syntax $(MAKEVAR) should not be escaped
       to allow a build tool to replace it.  Replacement values
       containing spaces, quotes, backslashes, or other
       non-alphanumeric characters that have significance to some makes
       or shells produce undefined behavior.  */
-  kwsysSystem_Shell_Flag_AllowMakeVariables = (1<<2)
+  kwsysSystem_Shell_Flag_AllowMakeVariables = (1<<3)
 };
 
 #if defined(__cplusplus)
@@ -102,6 +106,7 @@
 # undef kwsysSystem_Shell_Flag_e
 # undef kwsysSystem_Shell_Flag_Make
 # undef kwsysSystem_Shell_Flag_VSIDE
+# undef kwsysSystem_Shell_Flag_EchoWindows
 # undef kwsysSystem_Shell_Flag_AllowMakeVariables
 #endif
 

Index: System.c
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/kwsys/System.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- System.c	27 Sep 2006 17:43:46 -0000	1.3
+++ System.c	4 Oct 2006 22:52:24 -0000	1.4
@@ -66,6 +66,12 @@
 /*--------------------------------------------------------------------------*/
 static int kwsysSystem_Shell__CharNeedsQuotes(char c, int isUnix, int flags)
 {
+  /* On Windows the built-in command shell echo never needs quotes.  */
+  if(!isUnix && (flags & kwsysSystem_Shell_Flag_EchoWindows))
+    {
+    return 0;
+    }
+
   /* On all platforms quotes are needed to preserve whitespace.  */
   if(kwsysSystem_Shell__CharIsWhitespace(c))
     {
@@ -227,6 +233,10 @@
         ++size;
         }
       }
+    else if(flags & kwsysSystem_Shell_Flag_EchoWindows)
+      {
+      /* On Windows the built-in command shell echo never needs escaping.  */
+      }
     else
       {
       /* On Windows only backslashes and double-quotes need escaping.  */
@@ -334,6 +344,10 @@
         *out++ = '\\';
         }
       }
+    else if(flags & kwsysSystem_Shell_Flag_EchoWindows)
+      {
+      /* On Windows the built-in command shell echo never needs escaping.  */
+      }
     else
       {
       /* On Windows only backslashes and double-quotes need escaping.  */



More information about the Cmake-commits mailing list