# HG changeset patch # User Rik # Date 1323134015 28800 # Node ID 15400d5deb1c249d44b54774b66011095c9710d8 # Parent 1221086f1ba56eb7f78e82ea27a3234aed1a0c84 ls.m: Fix handling of special characters in filename arguments (Bug #34950) * ls.m: Escape special characters such as ["'(] in filename arguments. diff -r 1221086f1ba5 -r 15400d5deb1c scripts/miscellaneous/ls.m --- a/scripts/miscellaneous/ls.m Mon Dec 05 16:08:13 2011 -0500 +++ b/scripts/miscellaneous/ls.m Mon Dec 05 17:13:35 2011 -0800 @@ -51,14 +51,17 @@ args = tilde_expand (varargin); if (nargin > 0) - ## FIXME -- this will fail for filenames that contain single quote - ## characters... - cmd = sprintf (" '%s'", args{:}); + if (ispc () && ! isunix ()) + ## shell (cmd.exe) on MinGW uses '^' as escape character + args = regexprep (args{:}, '([^\w.*?])', '^$1'); + else + args = regexprep (args{:}, '([^\w.*?])', '\$1'); + endif else - cmd = ""; + args = ""; endif - cmd = sprintf ("%s%s", __ls_command__, cmd); + cmd = sprintf ("%s %s", __ls_command__, args); if (page_screen_output () || nargout > 0)