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);