diff options
author | Paul Schoenfelder <[email protected]> | 2017-01-31 17:40:34 -0600 |
---|---|---|
committer | Paul Schoenfelder <[email protected]> | 2017-02-16 08:55:15 -0500 |
commit | aa0c4b0df7cdc750450906aff4e8c81627d80605 (patch) | |
tree | 1dddc195225011bb7fefd1094bc6852629b44f21 /lib/sasl/src/systools_make.erl | |
parent | cce3120dd0021c5ab5bf8d5b4088e7364f678dda (diff) | |
download | otp-aa0c4b0df7cdc750450906aff4e8c81627d80605.tar.gz otp-aa0c4b0df7cdc750450906aff4e8c81627d80605.tar.bz2 otp-aa0c4b0df7cdc750450906aff4e8c81627d80605.zip |
Update erl_tar to support PAX format, etc.
This commit introduces the following key changes:
- Support for reading tar archives in formats currently in common use,
such as v7, STAR, USTAR, PAX, and GNU tar's extensions to the
STAR/USTAR format.
- Support for writing PAX archives, only when necessary, using USTAR
when possible for greater portability.
These changes result in lifting of some prior restrictions:
- Support for reading archives produced by modern tar implementations
when other restrictions described below are present.
- Support for filenames which exceed 100 bytes in length, or paths which
exceed 255 bytes (see USTAR format specification for more details on
this restriction).
- Support for filenames of arbitrary length
- Support for unicode metadata (the previous behaviour of erl_tar was
actually violating the spec, by writing unicode-encoded data to fields
which are defined to be 7-bit ASCII, even though this technically
worked when using erl_tar at source and destination, it may not have
worked with other tar utilities, and this implementation now conforms
to the spec).
- Support for uid/gid values which cannot be converted to octal
integers.
Diffstat (limited to 'lib/sasl/src/systools_make.erl')
-rw-r--r-- | lib/sasl/src/systools_make.erl | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/sasl/src/systools_make.erl b/lib/sasl/src/systools_make.erl index 6a16c8689e..e7609f616c 100644 --- a/lib/sasl/src/systools_make.erl +++ b/lib/sasl/src/systools_make.erl @@ -1904,8 +1904,10 @@ del_tar(Tar, TarName) -> file:delete(TarName). add_to_tar(Tar, FromFile, ToFile) -> - case erl_tar:add(Tar, FromFile, ToFile, [compressed, dereference]) of + case catch erl_tar:add(Tar, FromFile, ToFile, [compressed, dereference]) of ok -> ok; + {'EXIT', Reason} -> + throw({error, {tar_error, {add, FromFile, Reason}}}); {error, Error} -> throw({error, {tar_error, {add, FromFile, Error}}}) end. |