|
Packit |
08bd4c |
LIBARCHIVE_CHANGES(3) manual page
|
|
Packit |
08bd4c |
== NAME ==
|
|
Packit |
08bd4c |
'''libarchive_changes'''
|
|
Packit |
08bd4c |
- changes in libarchive interface
|
|
Packit |
08bd4c |
== CHANGES IN LIBARCHIVE 3 ==
|
|
Packit |
08bd4c |
This page describes user-visible changes in libarchive3, and lists
|
|
Packit |
08bd4c |
public functions and other symbols changed, deprecated or removed
|
|
Packit |
08bd4c |
in libarchive3, along with their replacements if any.
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
=== Multiple Filters===
|
|
Packit |
08bd4c |
Libarchive2 permitted a single (input or output) filter active
|
|
Packit |
08bd4c |
on an archive.
|
|
Packit |
08bd4c |
Libarchive3 extends this into a variable-length stack.
|
|
Packit |
08bd4c |
Where
|
|
Packit |
08bd4c |
'''archive_write_set_compression_XXX'''()
|
|
Packit |
08bd4c |
would replace any existing filter,
|
|
Packit |
08bd4c |
'''archive_write_add_filter_XXX'''()
|
|
Packit |
08bd4c |
extends the write pipeline with another filter.
|
|
Packit |
08bd4c |
=== Character Set Handling===
|
|
Packit |
08bd4c |
Libarchive2 assumed that the local platform uses
|
|
Packit |
08bd4c |
'''Unicode'''
|
|
Packit |
08bd4c |
as the native
|
|
Packit |
08bd4c |
'''wchar_t'''
|
|
Packit |
08bd4c |
encoding, which is true on
|
|
Packit |
08bd4c |
'''Windows ,'''
|
|
Packit |
08bd4c |
modern
|
|
Packit |
08bd4c |
'''Linux ,'''
|
|
Packit |
08bd4c |
and a few other systems, but is certainly not universal.
|
|
Packit |
08bd4c |
As a result, pax format archives were written incorrectly on some
|
|
Packit |
08bd4c |
systems, since pax format requires
|
|
Packit |
08bd4c |
'''UTF-8'''
|
|
Packit |
08bd4c |
and libarchive 2 incorrectly
|
|
Packit |
08bd4c |
assumed that
|
|
Packit |
08bd4c |
'''wchar_t'''
|
|
Packit |
08bd4c |
strings can be easily converted to
|
|
Packit |
08bd4c |
'''UTF-8 .'''
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
Libarchive3 uses the standard iconv library to convert between character
|
|
Packit |
08bd4c |
sets and is introducing the notion of a
|
|
Packit |
08bd4c |
"default character set for the archive".
|
|
Packit |
08bd4c |
To support this,
|
|
Packit |
08bd4c |
'''archive_entry'''
|
|
Packit |
08bd4c |
objects can now be bound to a particular archive when they are created.
|
|
Packit |
08bd4c |
The automatic character set conversions performed by
|
|
Packit |
08bd4c |
'''archive_entry'''
|
|
Packit |
08bd4c |
objects when reading and writing filenames, usernames, and other strings
|
|
Packit |
08bd4c |
will now use an appropriate default character set:
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
If the
|
|
Packit |
08bd4c |
'''archive_entry'''
|
|
Packit |
08bd4c |
object is bound to an archive, it will use the
|
|
Packit |
08bd4c |
default character set for that archive.
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
The platform default character encoding (as returned by
|
|
Packit |
08bd4c |
'''nl_langinfo'''(''CHARSET'', '')'')
|
|
Packit |
08bd4c |
will be used if nothing else is specified.
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
Libarchive3 also introduces charset options to many of the archive
|
|
Packit |
08bd4c |
readers and writers to control the character set that will be used for
|
|
Packit |
08bd4c |
filenames written in those archives.
|
|
Packit |
08bd4c |
When possible, this will be set automatically based on information in
|
|
Packit |
08bd4c |
the archive itself.
|
|
Packit |
08bd4c |
Combining this with the notion of a default character set for the
|
|
Packit |
08bd4c |
archive should allow you to configure libarchive to read archives from
|
|
Packit |
08bd4c |
other platforms and have the filenames and other information
|
|
Packit |
08bd4c |
transparently converted to the character encoding suitable for your
|
|
Packit |
08bd4c |
application.
|
|
Packit |
08bd4c |
=== Prototype Changes===
|
|
Packit |
08bd4c |
These changes break binary compatibility; libarchive3 has a new shared
|
|
Packit |
08bd4c |
library version to reflect these changes.
|
|
Packit |
08bd4c |
The library now uses portable wide types such as
|
|
Packit |
08bd4c |
'''int64_t'''
|
|
Packit |
08bd4c |
instead of less-portable types such as
|
|
Packit |
08bd4c |
'''off_t ,'''
|
|
Packit |
08bd4c |
'''gid_t ,'''
|
|
Packit |
08bd4c |
'''uid_t ,'''
|
|
Packit |
08bd4c |
and
|
|
Packit |
08bd4c |
'''ino_t .'''
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
There are a few cases where these changes will affect your source code:
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
In some cases, libarchive's wider types will introduce the possibility
|
|
Packit |
08bd4c |
of truncation: for example, on a system with a 16-bit
|
|
Packit |
08bd4c |
'''uid_t , you risk having uid'''
|
|
Packit |
08bd4c |
```text
|
|
Packit |
08bd4c |
65536
|
|
Packit |
08bd4c |
```
|
|
Packit |
08bd4c |
be truncated to uid
|
|
Packit |
08bd4c |
```text
|
|
Packit |
08bd4c |
0,
|
|
Packit |
08bd4c |
```
|
|
Packit |
08bd4c |
which can cause serious security problems.
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
Typedef function pointer types will be incompatible.
|
|
Packit |
08bd4c |
For example, if you define custom skip callbacks, you may have to use
|
|
Packit |
08bd4c |
code similar to the following if you want to support building against
|
|
Packit |
08bd4c |
libarchive2 and libarchive3:
|
|
Packit |
08bd4c |
```text
|
|
Packit |
08bd4c |
#if ARCHIVE_VERSION_NUMBER < 3000000
|
|
Packit |
08bd4c |
typedef off_t myoff_t;
|
|
Packit |
08bd4c |
#else
|
|
Packit |
08bd4c |
typedef int64_t myoff_t;
|
|
Packit |
08bd4c |
#endif
|
|
Packit |
08bd4c |
myoff_t
|
|
Packit |
08bd4c |
my_skip_function(struct archive *a, void *v, myoff_t o)
|
|
Packit |
08bd4c |
{
|
|
Packit |
08bd4c |
... implementation ...
|
|
Packit |
08bd4c |
}
|
|
Packit |
08bd4c |
```
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
Affected functions:
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_entry_gid'''(),
|
|
Packit |
08bd4c |
'''archive_entry_set_gid'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_entry_uid'''(),
|
|
Packit |
08bd4c |
'''archive_entry_set_uid'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_entry_ino'''(),
|
|
Packit |
08bd4c |
'''archive_entry_set_ino'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_read_data_block'''(),
|
|
Packit |
08bd4c |
'''archive_write_data_block'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_read_disk_gname'''(),
|
|
Packit |
08bd4c |
'''archive_read_disk_uname'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_read_disk_set_gname_lookup'''(),
|
|
Packit |
08bd4c |
'''archive_read_disk_set_group_lookup'''(),
|
|
Packit |
08bd4c |
'''archive_read_disk_set_uname_lookup'''(),
|
|
Packit |
08bd4c |
'''archive_read_disk_set_user_lookup'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_skip_callback'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_read_extract_set_skip_file'''(),
|
|
Packit |
08bd4c |
'''archive_write_disk_set_skip_file'''(),
|
|
Packit |
08bd4c |
'''archive_write_set_skip_file'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_write_disk_set_group_lookup'''(),
|
|
Packit |
08bd4c |
'''archive_write_disk_set_user_lookup'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
Where these functions or their arguments took or returned
|
|
Packit |
08bd4c |
'''gid_t ,'''
|
|
Packit |
08bd4c |
'''ino_t ,'''
|
|
Packit |
08bd4c |
'''off_t ,'''
|
|
Packit |
08bd4c |
or
|
|
Packit |
08bd4c |
'''uid_t'''
|
|
Packit |
08bd4c |
they now take or return
|
|
Packit |
08bd4c |
'''int64_t'''
|
|
Packit |
08bd4c |
or equivalent.
|
|
Packit |
08bd4c |
=== Deprecated Symbols===
|
|
Packit |
08bd4c |
Symbols deprecated in libarchive3 will be removed in libarchive4.
|
|
Packit |
08bd4c |
These symbols, along with their replacements if any, are listed below:
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_position_compressed'''(), '''archive_position_uncompressed'''()
|
|
Packit |
08bd4c |
'''archive_filter_bytes'''()
|
|
Packit |
08bd4c |
'''archive_compression'''()
|
|
Packit |
08bd4c |
'''archive_filter_code'''()
|
|
Packit |
08bd4c |
'''archive_compression_name'''()
|
|
Packit |
08bd4c |
'''archive_filter_name'''()
|
|
Packit |
08bd4c |
'''archive_read_finish'''(), '''archive_write_finish'''()
|
|
Packit |
08bd4c |
'''archive_read_free'''(),
|
|
Packit |
08bd4c |
'''archive_write_free'''()
|
|
Packit |
08bd4c |
'''archive_read_open_file'''(), '''archive_write_open_file'''()
|
|
Packit |
08bd4c |
'''archive_read_open_filename'''(),
|
|
Packit |
08bd4c |
'''archive_write_open_filename'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_all'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_all'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_bzip2'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_bzip2'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_compress'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_compress'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_gzip'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_gzip'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_lzip'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_lzip'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_lzma'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_lzma'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_none'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_none'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_program'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_program'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_program_signature'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_program_signature'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_rpm'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_rpm'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_uu'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_uu'''()
|
|
Packit |
08bd4c |
'''archive_read_support_compression_xz'''()
|
|
Packit |
08bd4c |
'''archive_read_support_filter_xz'''()
|
|
Packit |
08bd4c |
'''archive_write_set_compression_bzip2'''()
|
|
Packit |
08bd4c |
'''archive_write_add_filter_bzip2'''()
|
|
Packit |
08bd4c |
'''archive_write_set_compression_compress'''()
|
|
Packit |
08bd4c |
'''archive_write_add_filter_compress'''()
|
|
Packit |
08bd4c |
'''archive_write_set_compression_gzip'''()
|
|
Packit |
08bd4c |
'''archive_write_add_filter_gzip'''()
|
|
Packit |
08bd4c |
'''archive_write_set_compression_lzip'''()
|
|
Packit |
08bd4c |
'''archive_write_add_filter_lzip'''()
|
|
Packit |
08bd4c |
'''archive_write_set_compression_lzma'''()
|
|
Packit |
08bd4c |
'''archive_write_add_filter_lzma'''()
|
|
Packit |
08bd4c |
'''archive_write_set_compression_none'''()
|
|
Packit |
08bd4c |
'''archive_write_add_filter_none'''()
|
|
Packit |
08bd4c |
'''archive_write_set_compression_program'''()
|
|
Packit |
08bd4c |
'''archive_write_add_filter_program'''()
|
|
Packit |
08bd4c |
'''archive_write_set_compression_filter'''()
|
|
Packit |
08bd4c |
'''archive_write_add_filter_filter'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
=== Removed Symbols===
|
|
Packit |
08bd4c |
These symbols, listed below along with their replacements if any,
|
|
Packit |
08bd4c |
were deprecated in libarchive2, and are not part of libarchive3.
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
'''archive_api_feature'''()
|
|
Packit |
08bd4c |
'''archive_version_number'''()
|
|
Packit |
08bd4c |
'''archive_api_version'''()
|
|
Packit |
08bd4c |
'''archive_version_number'''()
|
|
Packit |
08bd4c |
'''archive_version'''()
|
|
Packit |
08bd4c |
'''archive_version_string'''()
|
|
Packit |
08bd4c |
'''archive_version_stamp'''()
|
|
Packit |
08bd4c |
'''archive_version_number'''()
|
|
Packit |
08bd4c |
'''archive_read_set_filter_options'''()
|
|
Packit |
08bd4c |
'''archive_read_set_options'''()
|
|
Packit |
08bd4c |
or
|
|
Packit |
08bd4c |
'''archive_read_set_filter_option'''()
|
|
Packit |
08bd4c |
'''archive_read_set_format_options'''()
|
|
Packit |
08bd4c |
'''archive_read_set_options'''()
|
|
Packit |
08bd4c |
or
|
|
Packit |
08bd4c |
'''archive_read_set_format_option'''()
|
|
Packit |
08bd4c |
'''archive_write_set_filter_options'''()
|
|
Packit |
08bd4c |
'''archive_write_set_options'''()
|
|
Packit |
08bd4c |
or
|
|
Packit |
08bd4c |
'''archive_write_set_filter_option'''()
|
|
Packit |
08bd4c |
'''archive_write_set_format_options'''()
|
|
Packit |
08bd4c |
'''archive_write_set_options'''()
|
|
Packit |
08bd4c |
or
|
|
Packit |
08bd4c |
'''archive_write_set_format_option'''()
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_API_FEATURE
|
|
Packit |
08bd4c |
ARCHIVE_VERSION_NUMBER
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_API_VERSION
|
|
Packit |
08bd4c |
ARCHIVE_VERSION_NUMBER
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_VERSION_STAMP
|
|
Packit |
08bd4c |
ARCHIVE_VERSION_NUMBER
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_LIBRARY_VERSION
|
|
Packit |
08bd4c |
ARCHIVE_VERSION_STRING
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_NONE
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_NONE
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_GZIP
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_GZIP
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_BZIP2
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_BZIP2
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_COMPRESS
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_COMPRESS
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_PROGRAM
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_PROGRAM
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_LZMA
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_LZMA
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_XZ
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_XZ
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_UU
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_UU
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_RPM
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_RPM
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_COMPRESSION_LZIP
|
|
Packit |
08bd4c |
ARCHIVE_FILTER_LZIP
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_BYTES_PER_RECORD
|
|
Packit |
08bd4c |
```text
|
|
Packit |
08bd4c |
512
|
|
Packit |
08bd4c |
```
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
ARCHIVE_DEFAULT_BYTES_PER_BLOCK
|
|
Packit |
08bd4c |
```text
|
|
Packit |
08bd4c |
10240
|
|
Packit |
08bd4c |
```
|
|
Packit |
08bd4c |
|
|
Packit |
08bd4c |
== SEE ALSO ==
|
|
Packit |
08bd4c |
[[ManPageibarchive3]],
|
|
Packit |
08bd4c |
[[ManPagerchiveead3]],
|
|
Packit |
08bd4c |
[[ManPagerchiveeadilter3]],
|
|
Packit |
08bd4c |
[[ManPagerchiveeadormat3]],
|
|
Packit |
08bd4c |
[[ManPagerchiveeadetptions3]],
|
|
Packit |
08bd4c |
[[ManPagerchiverite3]],
|
|
Packit |
08bd4c |
[[ManPagerchiveriteilter3]],
|
|
Packit |
08bd4c |
[[ManPagerchiveriteormat3]],
|
|
Packit |
08bd4c |
[[ManPagerchiveriteetptions3]],
|
|
Packit |
08bd4c |
[[ManPagerchivetil3]]
|