]> granicus.if.org Git - python/commitdiff
Added '_nt_quote_args()' to deal with whitespace in command-line arguments
authorGreg Ward <gward@python.net>
Tue, 7 Mar 2000 03:25:20 +0000 (03:25 +0000)
committerGreg Ward <gward@python.net>
Tue, 7 Mar 2000 03:25:20 +0000 (03:25 +0000)
in a rather half-assed, but probably effective, way.

Lib/distutils/spawn.py

index 847346cc2f9da93f8abfa20047041680e082549b..ae3d09fa318e87ab50f366d04643f8af28d4b0c2 100644 (file)
@@ -42,11 +42,28 @@ def spawn (cmd,
 # spawn ()
 
 
-def _spawn_nt ( cmd,
-                search_path=1,
-                verbose=0,
-                dry_run=0):
+def _nt_quote_args (args):
+    """Obscure quoting command line arguments on NT.
+       Simply quote every argument which contains blanks."""
+
+    # XXX this doesn't seem very robust to me -- but if the Windows guys
+    # say it'll work, I guess I'll have to accept it.  (What if an arg
+    # contains quotes?  What other magic characters, other than spaces,
+    # have to be escaped?  Is there an escaping mechanism other than
+    # quoting?)
+
+    for i in range (len (args)):
+        if string.find (args[i], ' ') == -1:
+            args[i] = '"%s"' % args[i]
+
+
+def _spawn_nt (cmd,
+               search_path=1,
+               verbose=0,
+               dry_run=0):
+
     executable = cmd[0]
+    cmd = _nt_quote_args (cmd)
     if search_path:
         paths = string.split( os.environ['PATH'], os.pathsep)
         base,ext = os.path.splitext(executable)
@@ -60,7 +77,7 @@ def _spawn_nt ( cmd,
                     # the file exists, we have a shot at spawn working
                     executable = f
     if verbose:
-        print string.join ( [executable] + cmd[1:], ' ')
+        print string.join ([executable] + cmd[1:], ' ')
     if not dry_run:
         # spawn for NT requires a full path to the .exe
         try: