Mercurial > octave
annotate scripts/miscellaneous/unpack.m @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | 3915633fdfd0 |
children | 6bcc5e6d77fe |
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); |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
16724
diff
changeset
|
274 [status, output] = system (sprintf ([command " 2>&1"], file)); |
6082 | 275 unwind_protect_cleanup |
276 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
|
277 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
|
278 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
|
279 endif |
6082 | 280 end_unwind_protect |
281 | |
282 if (status) | |
283 error ("unpack: unarchiving program exited with status: %d\n%s", | |
10549 | 284 status, output); |
6082 | 285 endif |
286 | |
6084 | 287 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
|
288 ## 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
|
289 files = parsefcn (ostrsplit (output, "\r\n", true))'; |
6082 | 290 |
19234 | 291 ## Move files if necessary. |
6082 | 292 if (needmove) |
19234 | 293 [st, msg] = movefile (files, cenddir); |
6082 | 294 if (! st) |
17000
45165d6c4738
unpack.m: Allow zip files to have any suffix (bug #39148)
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
295 error ('unpack: unable to move files to "%s": %s', dir, msg); |
6082 | 296 endif |
297 | |
19234 | 298 ## Fix the names of the files since they were moved. |
299 files = strrep (files, cstartdir, cenddir); | |
6082 | 300 endif |
301 | |
302 ## Return output if requested. | |
303 if (nargout > 0) | |
304 filelist = files; | |
305 endif | |
306 endif | |
307 | |
308 endfunction | |
309 | |
310 function files = __parse_zip__ (output) | |
311 ## Parse the output from zip and unzip. | |
312 | |
19234 | 313 ## 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
|
314 files = char (output(2:end)); |
19234 | 315 ## 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
|
316 files = cellstr (files(:,14:end)); |
6082 | 317 endfunction |
318 | |
319 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
|
320 ## 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
|
321 |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
26376
diff
changeset
|
322 if (tar_is_bsd ()) |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
26376
diff
changeset
|
323 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
|
324 endif |
6082 | 325 endfunction |
326 | |
327 function files = __parse_gzip__ (output) | |
328 ## 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
|
329 ## compressed (or decompressed). |
6082 | 330 |
30115
3915633fdfd0
unpack.m: Fix to support old and new versions of gzip (bug #43206).
Rik <rik@octave.org>
parents:
30112
diff
changeset
|
331 files = regexprep (output, '^.+ -- (?:created|replaced with) (.*)$', '$1'); |
6082 | 332 endfunction |
333 | |
334 function files = __parse_bzip2__ (output) | |
335 ## 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
|
336 ## compressed (or decompressed). |
6082 | 337 |
20713
2469d78a1d8b
Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents:
20291
diff
changeset
|
338 ## 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
|
339 files = regexprep (output, '^\s+(.*)\.bz2: .*', '$1'); |
19234 | 340 endfunction |
341 | |
342 | |
22270
2c7acd39e9b7
Conditionally disable tests that rely on optional features
Mike Miller <mtmiller@octave.org>
parents:
21758
diff
changeset
|
343 %!testif HAVE_ZLIB |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
344 %! envvar = {"TMPDIR", "TMP"}; |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
345 %! envdir = cellfun (@(x) getenv (x), envvar, "uniformoutput", false); |
19234 | 346 %! unwind_protect |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
347 %! 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
|
348 %! ## 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
|
349 %! dirname = tempname (); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
350 %! assert (mkdir (dirname)); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
351 %! filename = tempname (); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
352 %! 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
|
353 %! assert (fid >= 0); |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
354 %! 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
|
355 %! 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
|
356 %! fclose (fid); |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
357 %! |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
358 %! unwind_protect |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
359 %! copyfile (filename, [filename ".orig"]); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
360 %! gzip (filename, dirname); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
361 %! [~, f] = fileparts (filename); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
362 %! 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
|
363 %! assert (filelist{1}, filename); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
364 %! 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
|
365 %! assert (fid >= 0); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
366 %! orig_data = fread (fid); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
367 %! fclose (fid); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
368 %! fid = fopen (filename, "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 %! new_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 %! 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
|
373 %! 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
|
374 %! endif |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
375 %! unwind_protect_cleanup |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
376 %! unlink (filename); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
377 %! unlink ([filename ".orig"]); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
378 %! 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
|
379 %! 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
|
380 %! end_unwind_protect |
19234 | 381 %! unwind_protect_cleanup |
24662
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
382 %! ## 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
|
383 %! 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
|
384 %! if (isempty (envdir{i})) |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
385 %! unsetenv (envvar{i}); |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
386 %! else |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
387 %! 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
|
388 %! endif |
276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
389 %! endfor |
19234 | 390 %! end_unwind_protect |
391 | |
392 ## 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
|
393 %!error <Invalid call> unpack () |
19234 | 394 %!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
|
395 %!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
|
396 %!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
|
397 %!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
|
398 %!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
|
399 %! if (isunix || ismac) |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
400 %! unpack ("/", [], 1) |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
401 %! else |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
402 %! unpack ('C:\', [], 1) |
96c69234ac98
unpack.m: Fix failing BIST test on Windows (bug #54719).
Rik <rik@octave.org>
parents:
25885
diff
changeset
|
403 %! endif |
19234 | 404 %!error <FILETYPE must be given for a directory> |
405 %! if (isunix || ismac) | |
406 %! unpack ("/"); | |
407 %! else | |
408 %! unpack ('C:\'); | |
409 %! endif | |
25885
75ed70a1c108
Overhaul unpack and associated functions (bug #54567).
Rik <rik@octave.org>
parents:
25781
diff
changeset
|
410 %!error <FILETYPE must be "gz" for a directory> |
19234 | 411 %! if (isunix || ismac) |
412 %! unpack ("/", [], "foobar"); | |
413 %! else | |
414 %! unpack ('C:\', [], "foobar"); | |
415 %! endif |