Mercurial > octave
annotate scripts/miscellaneous/private/tar_is_bsd.m @ 27331:3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
* tar_is_bsd.m: New function.
* tar.m: Use it to determine how to run tar and parse command output.
* unpack.m: Likewise.
author | Andrew Janke <andrew@apjanke.net> |
---|---|
date | Mon, 21 Jan 2019 20:07:28 -0500 |
parents | |
children | 45ad2127582b |
rev | line source |
---|---|
27331
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
1 ## Copyright (C) 2019 Andrew Janke |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
2 ## |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
4 ## |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
5 ## Octave is free software: you can redistribute it and/or modify it |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
7 ## the Free Software Foundation, either version 3 of the License, or |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
8 ## (at your option) any later version. |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
9 ## |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
13 ## GNU General Public License for more details. |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
14 ## |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
17 ## <https://www.gnu.org/licenses/>. |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
18 |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
20 ## @deftypefn {} {@var{out} =} tar_is_bsd () |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
21 ## True if the default tar command is BSD tar. |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
22 ## |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
23 ## Checks whether the default tar command (the one invoked when an un-prefixed |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
24 ## @code{tar} is executed) is BSD tar or another tar. Caches the results for |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
25 ## performance. |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
26 ## |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
27 ## Returns true if the detected tar is BSD tar, and false otherwise. Errors if |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
28 ## @code{tar --version} does not succeed. |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
29 ## @end deftypefn |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
30 |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
31 function out = tar_is_bsd () |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
32 ## BSD tar needs to be handled differently from GNU tar |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
33 persistent cache |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
34 if isempty (cache) |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
35 [status, tar_ver_str] = system ("tar --version"); |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
36 if (status) |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
37 error ("tar: Failed executing tar --version (status = %d)", status); |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
38 endif |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
39 cache = ! isempty (regexp (tar_ver_str, "bsdtar")); |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
40 endif |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
41 out = cache; |
3bf19af20af8
tar, untar, unpack: Add support for BSD tar (bug #53695)
Andrew Janke <andrew@apjanke.net>
parents:
diff
changeset
|
42 endfunction |