[rtems-source-builder commit] sb/config: Escape double quotes on Windows for shell macros

Chris Johns chrisj at rtems.org
Fri Sep 6 01:53:10 UTC 2019


Module:    rtems-source-builder
Branch:    master
Commit:    d8b2719ae6f71c3380fc32aa34ac0796b98af236
Changeset: http://git.rtems.org/rtems-source-builder/commit/?id=d8b2719ae6f71c3380fc32aa34ac0796b98af236

Author:    Chris Johns <chrisj at rtems.org>
Date:      Fri Sep  6 10:42:28 2019 +1000

sb/config: Escape double quotes on Windows for shell macros

Closes #3792

---

 source-builder/sb/config.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/source-builder/sb/config.py b/source-builder/sb/config.py
index 8541cb5..58316db 100644
--- a/source-builder/sb/config.py
+++ b/source-builder/sb/config.py
@@ -421,14 +421,17 @@ class file:
 
     def _shell(self, line):
         #
-        # Parse the line and handle nesting '()' pairs.
+        # Parse the line and handle nesting '()' pairs. If on Windows
+        # handle embedded '"' (double quotes) as the command is run as
+        # a double quoted string.
         #
         def _exec(shell_macro):
             output = ''
             if len(shell_macro) > 3:
                 e = execute.capture_execution()
                 if options.host_windows:
-                    cmd = '%s -c "%s"' % (self.macros.expand('%{__sh}'), shell_macro[2:-1])
+                    shell_cmd = ''.join([c if c != '"' else '\\' + c for c in shell_macro[2:-1]])
+                    cmd = '%s -c "%s"' % (self.macros.expand('%{__sh}'), shell_cmd)
                 else:
                     cmd = shell_macro[2:-1]
                 exit_code, proc, output = e.shell(cmd)




More information about the vc mailing list