Escape-space fix.
authorCarl Hetherington <cth@carlh.net>
Sun, 6 May 2018 00:45:19 +0000 (01:45 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 6 May 2018 00:45:19 +0000 (01:45 +0100)
cdist

diff --git a/cdist b/cdist
index fbec567947d9575c8ba860c6a0d8e4cec81ba391..fc4e47891731dd4ec78558f935706cdb7f7f21d6 100755 (executable)
--- a/cdist
+++ b/cdist
@@ -152,6 +152,9 @@ def log(m):
     if not globals.quiet:
         print('\x1b[33m* %s\x1b[0m' % m)
 
+def escape_spaces(s):
+    return s.replace(' ', '\\ ')
+
 def scp_escape(n):
     """Escape a host:filename string for use with an scp command"""
     s = n.split(':')
@@ -178,8 +181,8 @@ def copyfile(a, b):
             host = b[:bc]
             path = b[bc+1:]
             temp_path = os.path.join(os.path.dirname(path), ".tmp." + os.path.basename(path))
-            command('scp %s %s:%s' % (scp_escape(a), host, scp_escape(temp_path)))
-            command('ssh %s -- mv %s %s' % (host, scp_escape(temp_path), scp_escape(path)))
+            command('scp %s %s' % (scp_escape(a), scp_escape(host + ":" + temp_path)))
+            command('ssh %s -- mv "%s" "%s"' % (host, escape_spaces(temp_path), escape_spaces(path)))
         else:
             command('scp %s %s' % (scp_escape(a), scp_escape(b)))