Mercurial > octave-nkf
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 |