comparison scripts/miscellaneous/ls.m @ 14000:15400d5deb1c

ls.m: Fix handling of special characters in filename arguments (Bug #34950) * ls.m: Escape special characters such as ["'(] in filename arguments.
author Rik <octave@nomad.inbox5.com>
date Mon, 05 Dec 2011 17:13:35 -0800
parents 5859cf1d57a6
children caa7439203f2
comparison
equal deleted inserted replaced
13999:1221086f1ba5 14000:15400d5deb1c
49 if (iscellstr (varargin)) 49 if (iscellstr (varargin))
50 50
51 args = tilde_expand (varargin); 51 args = tilde_expand (varargin);
52 52
53 if (nargin > 0) 53 if (nargin > 0)
54 ## FIXME -- this will fail for filenames that contain single quote 54 if (ispc () && ! isunix ())
55 ## characters... 55 ## shell (cmd.exe) on MinGW uses '^' as escape character
56 cmd = sprintf (" '%s'", args{:}); 56 args = regexprep (args{:}, '([^\w.*?])', '^$1');
57 else
58 args = regexprep (args{:}, '([^\w.*?])', '\$1');
59 endif
57 else 60 else
58 cmd = ""; 61 args = "";
59 endif 62 endif
60 63
61 cmd = sprintf ("%s%s", __ls_command__, cmd); 64 cmd = sprintf ("%s %s", __ls_command__, args);
62 65
63 if (page_screen_output () || nargout > 0) 66 if (page_screen_output () || nargout > 0)
64 67
65 [status, output] = system (cmd); 68 [status, output] = system (cmd);
66 69