# HG changeset patch # User Rik # Date 1458927153 25200 # Node ID 6187f1d2ca1300a552e42c404e751054a3841dc6 # Parent 936ab0fca2f72eb7659ea10b464514b93a5fb94b 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. diff -r 936ab0fca2f7 -r 6187f1d2ca13 scripts/miscellaneous/zip.m --- 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);