From 56beef8defcb5944be1ee523400b382119dbe8fc Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 15 Apr 2015 22:12:00 -0700 Subject: Fix escaping issues in open-process on Windows. This can now execute programs with spaces in their path names. Arguments can contain embedded double quotes, and other characters that are special to cmd.exe, like &, |, (, ), ^ and others. * stream.c (string_extend_count, win_escape_cmd): New static functions. (win_escape_arg): Fix and extend escaping scheme to cover not only the argument processing scheme implemented by programs which use Microsoft's C library, but also to smuggle the command line through cmd.exe. (win_make_cmdline): Use win_escape_cmd to wrap the command. Escape the quotes which are placed around arguments, so cmd.exe doesn't interpret them, which will cause it to suppress its processing of the caret escapes. --- ChangeLog | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index e2d223b0..b06f0dab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2015-04-15 Kaz Kylheku + + Fix escaping issues in open-process on Windows. + + This can now execute programs with spaces in their path names. + Arguments can contain embedded double quotes, and other characters + that are special to cmd.exe, like &, |, (, ), ^ and others. + + * stream.c (string_extend_count, win_escape_cmd): New static functions. + (win_escape_arg): Fix and extend escaping scheme to cover not only + the argument processing scheme implemented by programs which use Microsoft's + C library, but also to smuggle the command line through cmd.exe. + (win_make_cmdline): Use win_escape_cmd to wrap the command. + Escape the quotes which are placed around arguments, so cmd.exe + doesn't interpret them, which will cause it to suppress its processing + of the caret escapes. + 2015-04-15 Kaz Kylheku Allow quasiquotes in braces and quasiliterals, and quotes in braces. -- cgit v1.2.3