Mercurial > octave
changeset 21533:6187f1d2ca13
zip.m: Restore processing of wildcards partially lost in cset 50255c612915.
* zip.m: Don't use Octave glob to expand shell wildcards. Instead, escape
known bad shell characters and then pass file names to shell for expansion.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 25 Mar 2016 10:32:33 -0700 |
parents | 936ab0fca2f7 |
children | be1c9f1e31ab |
files | scripts/miscellaneous/zip.m |
diffstat | 1 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/miscellaneous/zip.m Tue Mar 22 20:39:16 2016 +1100 +++ b/scripts/miscellaneous/zip.m Fri Mar 25 10:32:33 2016 -0700 @@ -55,11 +55,13 @@ zipfile = make_absolute_filename (zipfile); - files = glob (files); # expand wildcards - files = regexprep (files, '"', '\\"'); # escape double quotes - files = sprintf (' "%s"', files{:}); # convert to space separated list - zipfile = regexprep (zipfile, '"', '\\"'); # escape double quotes - cmd = sprintf ('zip -r "%s" %s', zipfile, files); + ## FIXME: This is a lot of processing that could be done by the shell + ## if Octave had a way to call system without passing a single string. + ## Escape bad shell characters + files = regexprep (files, "([|&;<>()$`\\'\" ])", '\\$1'); + files = sprintf (' %s', files{:}); # convert to space separated list + zipfile = regexprep (zipfile, "'", "\\'"); # escape single quotes + cmd = sprintf ("zip -r '%s' %s", zipfile, files); origdir = pwd (); cd (rootdir);