Mercurial > octave
annotate scripts/miscellaneous/unpack.m @ 31193:6bcc5e6d77fe stable
unpack.m: Escape backslashes in paths on Windows (bug #62888).
* scripts/miscalleneous/unpack.m: Escape backslashes in paths on Windows. That
seems to be necessary to correctly handle double backslashes that prefix UNC
paths.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Thu, 18 Aug 2022 08:40:57 +0200 |
parents | 796f54d4ddbf |
children | c8ad083a5802 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 ######################################################################## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 ## |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30115
diff
changeset
|
3 ## Copyright (C) 2006-2022 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27569
diff
changeset
|
4 ## |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
7 ## |
6082 | 8 ## This file is part of Octave. |
9 ## | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24096
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
6082 | 11 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24096
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22511
diff
changeset
|
13 ## (at your option) any later version. |
6082 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22511
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22511
diff
changeset
|
18 ## GNU General Public License for more details. |
6082 | 19 ## |
20 ## You should have received a copy of the GNU General Public License | |
7016 | 21 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24096
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 ## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 ######################################################################## |
6082 | 25 |
26 ## -*- texinfo -*- | |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
27 ## @deftypefn {} {@var{files} =} unpack (@var{file}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
28 ## @deftypefnx {} {@var{files} =} unpack (@var{file}, @var{dir}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
29 ## @deftypefnx {} {@var{files} =} unpack (@var{file}, @var{dir}, @var{filetype}) |
6082 | 30 ## Unpack the archive @var{file} based on its extension to the directory |
19234 | 31 ## @var{dir}. |
32 ## | |
33 ## If @var{file} is a list of strings, then each file is unpacked | |
20164
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19951
diff
changeset
|
34 ## individually. Shell wildcards in the filename such as @samp{*} or |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19951
diff
changeset
|
35 ## @samp{?} are accepted and expanded. |
19234 | 36 ## |
37 ## If @var{dir} is not specified or is empty (@code{[]}), it defaults to the | |
38 ## current directory. If a directory is in the file list, then @var{filetype} | |
39 ## must also be specified. | |
40 ## | |
41 ## The specific archive filetype is inferred from the extension of the file. | |
42 ## The @var{filetype} may also be specified directly using a string which | |
43 ## corresponds to a known extension. | |
44 ## | |
45 ## Valid filetype extensions: | |
46 ## | |
47 ## @table @code | |
25003
2365c2661b3c
doc: Spellcheck documentation ahead of 4.4 release.
Rik <rik@octave.org>
parents:
24662
diff
changeset
|
48 ## @item @nospell{bz} |
2365c2661b3c
doc: Spellcheck documentation ahead of 4.4 release.
Rik <rik@octave.org>
parents:
24662
diff
changeset
|
49 ## @itemx @nospell{bz2} |
19234 | 50 ## bzip archive |
51 ## | |
25003
2365c2661b3c
doc: Spellcheck documentation ahead of 4.4 release.
Rik <rik@octave.org>
parents:
24662
diff
changeset
|
52 ## @item @nospell{gz} |
19234 | 53 ## gzip archive |
54 ## | |
55 ## @item tar | |
56 ## tar archive | |
57 ## | |
58 ## @item tarbz | |
19235
cac9d4c49522
unpack.m: Fix Texinfo error in docstring.
Rik <rik@octave.org>
parents:
19234
diff
changeset
|
59 ## @itemx tarbz2 |
19234 | 60 ## @itemx tbz |
61 ## @itemx tbz2 | |
62 ## tar + bzip archive | |
63 ## | |
64 ## @item targz | |
65 ## @itemx tgz | |
66 ## tar + gzip archive | |
67 ## | |
68 ## @item z | |
69 ## compress archive | |
70 ## | |
71 ## @item zip | |
72 ## zip archive | |
73 ## @end table | |
6082 | 74 ## |
12642
f96b9b9f141b
doc: Periodic grammarcheck and spellcheck of documentation.
Rik <octave@nomad.inbox5.com>
parents:
12500
diff
changeset
|
75 ## The optional return value is a list of @var{files} unpacked. |
19243 | 76 ## @seealso{bunzip2, gunzip, unzip, untar, bzip2, gzip, zip, tar} |
6082 | 77 ## @end deftypefn |
78 | |
26142
b9d72a2dac8f
Accept a cell array of strings to uncompress functions (bug #55102).
Rik <rik@octave.org>
parents:
25948
diff
changeset
|
79 function filelist = unpack (file, dir = [], filetype = "") |
6082 | 80 |
28789
28de41192f3c
Eliminate unneeded verification of nargin, nargout in m-files.
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
81 if (nargin < 1) |
6082 | 82 print_usage (); |
83 endif | |
84 | |
19234 | 85 if (! ischar (file) && ! iscellstr (file)) |
86 error ("unpack: FILE must be a string or cell array of strings"); | |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
87 endif |
6082 | 88 |
19234 | 89 ## Convert char arrays to cell strings to simplify further processing |
90 if (ischar (file)) | |
91 file = cellstr (file); | |
92 endif | |
93 if (numel (file) == 1) | |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
94 ## FIXME: The code below is not a perfect test for a URL |
20748
bb219f1d92db
Fix indexing error in cset 69aeef6736df.
Rik <rik@octave.org>
parents:
20746
diff
changeset
|
95 if (isempty (strfind (file{1}, "://"))) |
29093
1c212b36a35e
Use "__wglob__" instead of "glob" on Windows (bug #59287).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28896
diff
changeset
|
96 if (ispc ()) |
1c212b36a35e
Use "__wglob__" instead of "glob" on Windows (bug #59287).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28896
diff
changeset
|
97 gfile = __wglob__ (file); |
1c212b36a35e
Use "__wglob__" instead of "glob" on Windows (bug #59287).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28896
diff
changeset
|
98 else |
1c212b36a35e
Use "__wglob__" instead of "glob" on Windows (bug #59287).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28896
diff
changeset
|
99 gfile = glob (file); |
1c212b36a35e
Use "__wglob__" instead of "glob" on Windows (bug #59287).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28896
diff
changeset
|
100 endif |
20746
69aeef6736df
unpack.m: Restore ability for input to be a URL (bug #46504).
Rik <rik@octave.org>
parents:
20713
diff
changeset
|
101 if (isempty (gfile)) |
22760
c4d80b9d2898
maint: Capitalize variable names appearing in error() messages of m-files.
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
102 error ('unpack: FILE "%s" not found', file{1}); |
20746
69aeef6736df
unpack.m: Restore ability for input to be a URL (bug #46504).
Rik <rik@octave.org>
parents:
20713
diff
changeset
|
103 else |
69aeef6736df
unpack.m: Restore ability for input to be a URL (bug #46504).
Rik <rik@octave.org>
parents:
20713
diff
changeset
|
104 file = gfile; |
69aeef6736df
unpack.m: Restore ability for input to be a URL (bug #46504).
Rik <rik@octave.org>
parents:
20713
diff
changeset
|
105 endif |
19234 | 106 endif |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
107 endif |
6082 | 108 |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
109 ## Recursively unpack cellstr arrays one file at a time |
19234 | 110 if (numel (file) > 1) |
6082 | 111 files = {}; |
112 for i = 1:numel (file) | |
26142
b9d72a2dac8f
Accept a cell array of strings to uncompress functions (bug #55102).
Rik <rik@octave.org>
parents:
25948
diff
changeset
|
113 if (! isempty (dir)) |
b9d72a2dac8f
Accept a cell array of strings to uncompress functions (bug #55102).
Rik <rik@octave.org>
parents:
25948
diff
changeset
|
114 tmpfiles = unpack (file{i}, dir); |
b9d72a2dac8f
Accept a cell array of strings to uncompress functions (bug #55102).
Rik <rik@octave.org>
parents:
25948
diff
changeset
|
115 else |
b9d72a2dac8f
Accept a cell array of strings to uncompress functions (bug #55102).
Rik <rik@octave.org>
parents:
25948
diff
changeset
|
116 tmpfiles = unpack (file{i}, fileparts (file{i})); |
b9d72a2dac8f
Accept a cell array of strings to uncompress functions (bug #55102).
Rik <rik@octave.org>
parents:
25948
diff
changeset
|
117 endif |
6082 | 118 files = {files{:} tmpfiles{:}}; |
119 endfor | |
120 | |
8352
33337f1aca75
fix bug in cell string handling of unpack function
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
8297
diff
changeset
|
121 ## Return output if requested. |
33337f1aca75
fix bug in cell string handling of unpack function
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
8297
diff
changeset
|
122 if (nargout > 0) |
33337f1aca75
fix bug in cell string handling of unpack function
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
8297
diff
changeset
|
123 filelist = files; |
33337f1aca75
fix bug in cell string handling of unpack function
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
8297
diff
changeset
|
124 endif |
19234 | 125 return; |
8352
33337f1aca75
fix bug in cell string handling of unpack function
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
8297
diff
changeset
|
126 |
19233
0ded8964c13a
Added wildcard * support to archive-related routines (bug #43211).
Massimiliano Fasi <massimiliano.fasi@gmail.com>
parents:
18857
diff
changeset
|
127 else |
19234 | 128 file = file{1}; |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
129 endif |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
130 |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
131 if (nargin == 3 && (! ischar (filetype) || ! isrow (filetype))) |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
132 error ("unpack: FILETYPE must be a string"); |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
133 endif |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
134 |
25781
e04c56bbbace
isdir.m: Make m-file a legacy function (bug #54489)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
135 if (isfolder (file)) |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
136 if (isempty (filetype)) |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
137 error ("unpack: FILETYPE must be given for a directory"); |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
138 elseif (! strcmpi (filetype, "gz")) |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
139 error ('unpack: FILETYPE must be "gz" for a directory'); |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
140 endif |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
141 ext = ".gz"; |
6082 | 142 else |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
143 [pathstr, name, ext] = fileparts (file); |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
144 |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
145 if (nargin == 3 && ! strcmpi (ext, filetype)) |
25948
700b3f415ebe
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
25893
diff
changeset
|
146 ## override extension with given filetype |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
147 if (isempty (ext)) |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
148 ext = filetype; |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
149 else |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
150 ext = regexprep (ext, '(\.?)\S*$', ['$1' filetype]); |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
151 endif |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
152 endif |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
153 |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
154 ## Check to see if it's .tar.gz, .tar.Z, etc. |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
155 if (any (strcmpi ({".gz" ".Z" ".bz2" ".bz"}, ext))) |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
156 [~, tmpname, tmpext] = fileparts (name); |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
157 if (strcmpi (tmpext, ".tar")) |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
158 name = tmpname; |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
16724
diff
changeset
|
159 ext = [tmpext ext]; |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
160 endif |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
161 endif |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
162 |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
163 ## If the file is a URL, download it and then work with that file. |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
164 if (! isempty (strfind (file, "://"))) |
19234 | 165 ## FIXME: The above code is not a perfect test for a URL |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
166 urlfile = file; |
20755
46b15c018fa5
unpack.m: Fix handling of gzip archives expanded into /tmp (bug #40274).
Rik <rik@octave.org>
parents:
20748
diff
changeset
|
167 tmpfile = fullfile (tempdir (), [name ext]); |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
168 [file, success, msg] = urlwrite (urlfile, tmpfile); |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
169 if (! success) |
19234 | 170 error ('unpack: could not fetch "%s": %s', urlfile, msg); |
12499
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
171 endif |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
172 endif |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
173 |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
174 endif |
a3019189ac51
Improve file archiving functions (gzip, bzip2, zip, unpack)
Rik <octave@nomad.inbox5.com>
parents:
11588
diff
changeset
|
175 |
19579
0cc52d752f99
unpack.m: replace canonicalize_file_name by make_absolute_filename (bug #43979)
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
19278
diff
changeset
|
176 file = make_absolute_filename (file); |
6082 | 177 |
20291
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
178 if (isempty (dir)) |
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
179 dir = "."; |
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
180 else |
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
181 dir = tilde_expand (dir); |
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
182 endif |
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
183 |
6082 | 184 ## Instructions on what to do for any extension. |
185 ## | |
186 ## The field names are the file extension without periods. | |
187 ## The first cell is what is executed to unpack an archive verbosely. | |
188 ## The second cell is what is executed to unpack an archive quietly. | |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
189 ## The third cell is the function to execute on output to get the files list. |
6082 | 190 ## The fourth cell indicates if the files may need to be manually moved |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
191 ## (i.e., tar and unzip decompress into the current directory while |
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
192 ## bzip2 and gzip decompress the file at its location). |
6082 | 193 persistent commandlist; |
194 if (isempty (commandlist)) | |
30112
167747278b7a
use -k option for bzip2 and gzip (bug #43206)
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
195 commandlist.gz = {'gzip -d -k -v -f -r "%s"', ... |
167747278b7a
use -k option for bzip2 and gzip (bug #43206)
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
196 'gzip -d -k -f -r "%s"', ... |
10549 | 197 @__parse_gzip__, true}; |
6082 | 198 commandlist.z = commandlist.gz; |
30112
167747278b7a
use -k option for bzip2 and gzip (bug #43206)
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
199 commandlist.bz2 = {'bzip2 -d -k -v -f "%s"', ... |
167747278b7a
use -k option for bzip2 and gzip (bug #43206)
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
200 'bzip2 -d -k -f "%s"', ... |
10549 | 201 @__parse_bzip2__, true}; |
6082 | 202 commandlist.bz = commandlist.bz2; |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
203 commandlist.tar = {'tar xvf "%s"', ... |
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
204 'tar xf "%s"', ... |
10549 | 205 @__parse_tar__, false}; |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
206 commandlist.targz = {'gzip -d -c "%s" | tar xvf -', ... |
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
207 'gzip -d -c "%s" | tar xf -', ... |
10549 | 208 @__parse_tar__, false}; |
6082 | 209 commandlist.tgz = commandlist.targz; |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
210 commandlist.tarbz2 = {'bzip2 -d -c "%s" | tar xvf -', ... |
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
211 'bzip2 -d -c "%s" | tar xf -', ... |
10549 | 212 @__parse_tar__, false}; |
6082 | 213 commandlist.tarbz = commandlist.tarbz2; |
214 commandlist.tbz2 = commandlist.tarbz2; | |
215 commandlist.tbz = commandlist.tarbz2; | |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
216 commandlist.zip = {'unzip -n "%s"', ... |
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
217 'unzip -nq "%s"', ... |
10549 | 218 @__parse_zip__, false}; |
6082 | 219 endif |
220 | |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
221 ## Unzip doesn't actually care about the extension |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
222 if (strcmpi (filetype, "zip")) |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
223 nodotext = "zip"; |
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
224 else |
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
225 nodotext = ext(ext != '.'); |
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
226 endif |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
227 |
19951
8c20fb6caa16
Fix XFAIL with tar and unpack tests (bug #44007, bug #43979).
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
19927
diff
changeset
|
228 if (ispc && strcmp (nodotext, "tar")) |
8c20fb6caa16
Fix XFAIL with tar and unpack tests (bug #44007, bug #43979).
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
19927
diff
changeset
|
229 ## Change file pathname into a mingw style acceptable for tar |
8c20fb6caa16
Fix XFAIL with tar and unpack tests (bug #44007, bug #43979).
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
19927
diff
changeset
|
230 file = __w2mpth__ (file); |
8c20fb6caa16
Fix XFAIL with tar and unpack tests (bug #44007, bug #43979).
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
19927
diff
changeset
|
231 endif |
8c20fb6caa16
Fix XFAIL with tar and unpack tests (bug #44007, bug #43979).
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
19927
diff
changeset
|
232 |
27569
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
233 ## Create the output directory if necessary. |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
234 s = stat (dir); |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
235 if (isempty (s)) |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
236 [status, msg] = mkdir (dir); |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
237 if (! status) |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
238 error ("unpack: mkdir failed to create %s: %s", dir, msg); |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
239 endif |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
240 elseif (! S_ISDIR (s.mode)) |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
241 error ("unpack: %s: not a directory", dir); |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
242 endif |
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
243 |
19234 | 244 if (isfield (commandlist, tolower (nodotext))) |
245 [commandv, commandq, parsefcn, move] = deal (commandlist.(nodotext){:}); | |
246 origdir = pwd (); | |
247 if (move) | |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19579
diff
changeset
|
248 startdir = fileparts (file); |
19234 | 249 else |
250 startdir = origdir; | |
251 endif | |
19951
8c20fb6caa16
Fix XFAIL with tar and unpack tests (bug #44007, bug #43979).
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
19927
diff
changeset
|
252 cstartdir = make_absolute_filename (startdir); |
8c20fb6caa16
Fix XFAIL with tar and unpack tests (bug #44007, bug #43979).
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
19927
diff
changeset
|
253 cenddir = make_absolute_filename (dir); |
20291
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
254 if (cenddir(end) == filesep) |
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
255 cenddir(end) = []; |
2fc43288a6c4
unpack.m: Stop hang when unpacking on to existing filename (bug #45331).
Rik <rik@octave.org>
parents:
20164
diff
changeset
|
256 endif |
27569
29ccef7e5295
New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27331
diff
changeset
|
257 needmove = move && ! is_same_file (cstartdir, cenddir); |
6082 | 258 if (nargout > 0 || needmove) |
259 command = commandv; | |
260 else | |
261 command = commandq; | |
262 endif | |
263 else | |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
264 warning ("unpack: unrecognized FILETYPE <%s>", nodotext); |
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
265 filelist = {}; |
6082 | 266 return; |
267 endif | |
268 | |
24096
8f3db1ac7877
tar, untar, unpack: ensure TAR_OPTIONS doesn't affect behavior (bug #52095)
Mike Miller <mtmiller@octave.org>
parents:
23220
diff
changeset
|
269 ## Save and restore the TAR_OPTIONS environment variable used by GNU tar. |
8f3db1ac7877
tar, untar, unpack: ensure TAR_OPTIONS doesn't affect behavior (bug #52095)
Mike Miller <mtmiller@octave.org>
parents:
23220
diff
changeset
|
270 tar_options_env = getenv ("TAR_OPTIONS"); |
6082 | 271 unwind_protect |
24096
8f3db1ac7877
tar, untar, unpack: ensure TAR_OPTIONS doesn't affect behavior (bug #52095)
Mike Miller <mtmiller@octave.org>
parents:
23220
diff
changeset
|
272 unsetenv ("TAR_OPTIONS"); |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
273 cd (dir); |
31193
6bcc5e6d77fe
unpack.m: Escape backslashes in paths on Windows (bug #62888).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
274 if (ispc ()) |
6bcc5e6d77fe
unpack.m: Escape backslashes in paths on Windows (bug #62888).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
275 ## Escape backslashes (necessary for UNC paths). |
6bcc5e6d77fe
unpack.m: Escape backslashes in paths on Windows (bug #62888).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
276 file = strrep (file, '\', '\\'); |
6bcc5e6d77fe
unpack.m: Escape backslashes in paths on Windows (bug #62888).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
277 endif |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
16724
diff
changeset
|
278 [status, output] = system (sprintf ([command " 2>&1"], file)); |
6082 | 279 unwind_protect_cleanup |
280 cd (origdir); | |
24096
8f3db1ac7877
tar, untar, unpack: ensure TAR_OPTIONS doesn't affect behavior (bug #52095)
Mike Miller <mtmiller@octave.org>
parents:
23220
diff
changeset
|
281 if (! isempty (tar_options_env)) |
8f3db1ac7877
tar, untar, unpack: ensure TAR_OPTIONS doesn't affect behavior (bug #52095)
Mike Miller <mtmiller@octave.org>
parents:
23220
diff
changeset
|
282 setenv ("TAR_OPTIONS", tar_options_env); |
8f3db1ac7877
tar, untar, unpack: ensure TAR_OPTIONS doesn't affect behavior (bug #52095)
Mike Miller <mtmiller@octave.org>
parents:
23220
diff
changeset
|
283 endif |
6082 | 284 end_unwind_protect |
285 | |
286 if (status) | |
287 error ("unpack: unarchiving program exited with status: %d\n%s", | |
10549 | 288 status, output); |
6082 | 289 endif |
290 | |
6084 | 291 if (nargout > 0 || needmove) |
19927
0cc365dada52
Allow tar, unpack, and zip to run on Windows with CR/NL EOL.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
292 ## Trim the last CR or NL if needed. |
0cc365dada52
Allow tar, unpack, and zip to run on Windows with CR/NL EOL.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
293 files = parsefcn (ostrsplit (output, "\r\n", true))'; |
6082 | 294 |
19234 | 295 ## Move files if necessary. |
6082 | 296 if (needmove) |
19234 | 297 [st, msg] = movefile (files, cenddir); |
6082 | 298 if (! st) |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
299 error ('unpack: unable to move files to "%s": %s', dir, msg); |
6082 | 300 endif |
301 | |
19234 | 302 ## Fix the names of the files since they were moved. |
303 files = strrep (files, cstartdir, cenddir); | |
6082 | 304 endif |
305 | |
306 ## Return output if requested. | |
307 if (nargout > 0) | |
308 filelist = files; | |
309 endif | |
310 endif | |
311 | |
312 endfunction | |
313 | |
314 function files = __parse_zip__ (output) | |
315 ## Parse the output from zip and unzip. | |
316 | |
19234 | 317 ## Skip first line which is Archive header. |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
318 files = char (output(2:end)); |
19234 | 319 ## Trim constant width prefix and return cell array. |
21385
89fa0694aa2e
Fix check-missing-semicolon QA target (bug #47277).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
320 files = cellstr (files(:,14:end)); |
6082 | 321 endfunction |
322 | |
323 function output = __parse_tar__ (output) | |
27331
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
26376
diff
changeset
|
324 ## BSD tar emits file actions in the first 2 columns |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
26376
diff
changeset
|
325 |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
26376
diff
changeset
|
326 if (tar_is_bsd ()) |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
26376
diff
changeset
|
327 output = cellfun (@(x) x(3:end), output, 'UniformOutput', false); |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
26376
diff
changeset
|
328 endif |
6082 | 329 endfunction |
330 | |
331 function files = __parse_gzip__ (output) | |
332 ## Parse the output from gzip and gunzip returning the files | |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21571
diff
changeset
|
333 ## compressed (or decompressed). |
6082 | 334 |
30115
3915633fdfd0
unpack.m: Fix to support old and new versions of gzip (bug #43206).
Rik <rik@octave.org>
parents:
30112
diff
changeset
|
335 files = regexprep (output, '^.+ -- (?:created|replaced with) (.*)$', '$1'); |
6082 | 336 endfunction |
337 | |
338 function files = __parse_bzip2__ (output) | |
339 ## Parse the output from bzip2 and bunzip2 returning the files | |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21571
diff
changeset
|
340 ## compressed (or decompressed). |
6082 | 341 |
20713
2469d78a1d8b
Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents:
20291
diff
changeset
|
342 ## Strip leading blanks and .bz2 extension from filename |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
343 files = regexprep (output, '^\s+(.*)\.bz2: .*', '$1'); |
19234 | 344 endfunction |
345 | |
346 | |
22270
2c7acd39e9b7
Conditionally disable tests that rely on optional features
Mike Miller <mtmiller@octave.org>
parents:
21758
diff
changeset
|
347 %!testif HAVE_ZLIB |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
348 %! envvar = {"TMPDIR", "TMP"}; |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
349 %! envdir = cellfun (@(x) getenv (x), envvar, "uniformoutput", false); |
19234 | 350 %! unwind_protect |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
351 %! cellfun (@(x) unsetenv (x), envvar); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
352 %! ## Create temporary directory and file for packing and unpacking |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
353 %! dirname = tempname (); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
354 %! assert (mkdir (dirname)); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
355 %! filename = tempname (); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
356 %! fid = fopen (filename, "wt"); |
19259
f8552bd35180
unpack.m: Rewrite BIST test to not produce warning on stderr.
Rik <rik@octave.org>
parents:
19243
diff
changeset
|
357 %! assert (fid >= 0); |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
358 %! fprintf (fid, "Hello World\n"); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
359 %! fprintf (fid, "123 456 789\n"); |
19259
f8552bd35180
unpack.m: Rewrite BIST test to not produce warning on stderr.
Rik <rik@octave.org>
parents:
19243
diff
changeset
|
360 %! fclose (fid); |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
361 %! |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
362 %! unwind_protect |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
363 %! copyfile (filename, [filename ".orig"]); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
364 %! gzip (filename, dirname); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
365 %! [~, f] = fileparts (filename); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
366 %! filelist = unpack (fullfile (dirname, [f ".gz"]), tempdir); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
367 %! assert (filelist{1}, filename); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
368 %! fid = fopen ([filename ".orig"], "rb"); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
369 %! assert (fid >= 0); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
370 %! orig_data = fread (fid); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
371 %! fclose (fid); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
372 %! fid = fopen (filename, "rb"); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
373 %! assert (fid >= 0); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
374 %! new_data = fread (fid); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
375 %! fclose (fid); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
376 %! if (orig_data != new_data) |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
377 %! error ("unpack: Unpacked file does not equal original"); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
378 %! endif |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
379 %! unwind_protect_cleanup |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
380 %! unlink (filename); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
381 %! unlink ([filename ".orig"]); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
382 %! confirm_recursive_rmdir (false, "local"); |
28087
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27978
diff
changeset
|
383 %! sts = rmdir (dirname, "s"); |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
384 %! end_unwind_protect |
19234 | 385 %! unwind_protect_cleanup |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
386 %! ## Restore environment variables TMPDIR, TMP |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
387 %! for i = 1:numel (envvar) |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
388 %! if (isempty (envdir{i})) |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
389 %! unsetenv (envvar{i}); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
390 %! else |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
391 %! setenv (envvar{i}, envdir{i}); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
392 %! endif |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
393 %! endfor |
19234 | 394 %! end_unwind_protect |
395 | |
396 ## Test input validation | |
28896
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
397 %!error <Invalid call> unpack () |
19234 | 398 %!error <FILE must be a string or cell array of strings> unpack (1) |
22765
01aae08a0105
maint: Rename variables to match documentation in m-files.
Rik <rik@octave.org>
parents:
22760
diff
changeset
|
399 %!error <FILE "_%NOT_A_FILENAME%_" not found> unpack ("_%NOT_A_FILENAME%_") |
01aae08a0105
maint: Rename variables to match documentation in m-files.
Rik <rik@octave.org>
parents:
22760
diff
changeset
|
400 %!error <FILE "_%NOT_A_FILENAME%_" not found> unpack ({"_%NOT_A_FILENAME%_"}) |
01aae08a0105
maint: Rename variables to match documentation in m-files.
Rik <rik@octave.org>
parents:
22760
diff
changeset
|
401 %!error <FILE "_%NOT_A_FILENAME%_" not found> unpack ({"_%NOT_A_FILENAME%_", "2nd_filename"}) |
25893
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
402 %!error <FILETYPE must be a string> |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
403 %! if (isunix || ismac) |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
404 %! unpack ("/", [], 1) |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
405 %! else |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
406 %! unpack ('C:\', [], 1) |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
407 %! endif |
19234 | 408 %!error <FILETYPE must be given for a directory> |
409 %! if (isunix || ismac) | |
410 %! unpack ("/"); | |
411 %! else | |
412 %! unpack ('C:\'); | |
413 %! endif | |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
414 %!error <FILETYPE must be "gz" for a directory> |
19234 | 415 %! if (isunix || ismac) |
416 %! unpack ("/", [], "foobar"); | |
417 %! else | |
418 %! unpack ('C:\', [], "foobar"); | |
419 %! endif |