Blame doc/man/libarchive_changes.3

Packit 08bd4c
.TH LIBARCHIVE_CHANGES 3 "December 23, 2011" ""
Packit 08bd4c
.SH NAME
Packit 08bd4c
.ad l
Packit 08bd4c
\fB\%libarchive_changes\fP
Packit 08bd4c
\- changes in libarchive interface
Packit 08bd4c
.SH CHANGES IN LIBARCHIVE 3
Packit 08bd4c
.ad l
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
.PP
Packit 08bd4c
.SS 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
\fB\%archive_write_set_compression_XXX\fP()
Packit 08bd4c
would replace any existing filter,
Packit 08bd4c
\fB\%archive_write_add_filter_XXX\fP()
Packit 08bd4c
extends the write pipeline with another filter.
Packit 08bd4c
.SS Character Set Handling
Packit 08bd4c
Libarchive2 assumed that the local platform uses
Packit 08bd4c
Tn Unicode
Packit 08bd4c
as the native
Packit 08bd4c
Tn wchar_t
Packit 08bd4c
encoding, which is true on
Packit 08bd4c
Tn Windows,
Packit 08bd4c
modern
Packit 08bd4c
Tn 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
Tn UTF-8
Packit 08bd4c
and libarchive 2 incorrectly
Packit 08bd4c
assumed that
Packit 08bd4c
Tn wchar_t
Packit 08bd4c
strings can be easily converted to
Packit 08bd4c
Tn UTF-8.
Packit 08bd4c
.PP
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
Tn 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
Tn 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
.PP
Packit 08bd4c
If the
Packit 08bd4c
Tn archive_entry
Packit 08bd4c
object is bound to an archive, it will use the
Packit 08bd4c
default character set for that archive.
Packit 08bd4c
.PP
Packit 08bd4c
The platform default character encoding (as returned by
Packit 08bd4c
\fB\%nl_langinfo\fP(\fI\%CHARSET\fP, \fI\%)\fP)
Packit 08bd4c
will be used if nothing else is specified.
Packit 08bd4c
.PP
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
.SS 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
Tn int64_t
Packit 08bd4c
instead of less-portable types such as
Packit 08bd4c
Tn off_t,
Packit 08bd4c
Tn gid_t,
Packit 08bd4c
Tn uid_t,
Packit 08bd4c
and
Packit 08bd4c
Tn ino_t.
Packit 08bd4c
.PP
Packit 08bd4c
There are a few cases where these changes will affect your source code:
Packit 08bd4c
.RS 5
Packit 08bd4c
.IP \(bu
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
Tn uid_t, you risk having uid
Packit 08bd4c
.RS 4
Packit 08bd4c
65536
Packit 08bd4c
.RE
Packit 08bd4c
be truncated to uid
Packit 08bd4c
.RS 4
Packit 08bd4c
0,
Packit 08bd4c
.RE
Packit 08bd4c
which can cause serious security problems.
Packit 08bd4c
.IP \(bu
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
.RS 4
Packit 08bd4c
.nf
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
.RE
Packit 08bd4c
.RE
Packit 08bd4c
.PP
Packit 08bd4c
Affected functions:
Packit 08bd4c
.PP
Packit 08bd4c
.RS 5
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_entry_gid\fP(),
Packit 08bd4c
\fB\%archive_entry_set_gid\fP()
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_entry_uid\fP(),
Packit 08bd4c
\fB\%archive_entry_set_uid\fP()
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_entry_ino\fP(),
Packit 08bd4c
\fB\%archive_entry_set_ino\fP()
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_read_data_block\fP(),
Packit 08bd4c
\fB\%archive_write_data_block\fP()
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_read_disk_gname\fP(),
Packit 08bd4c
\fB\%archive_read_disk_uname\fP()
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_read_disk_set_gname_lookup\fP(),
Packit 08bd4c
\fB\%archive_read_disk_set_group_lookup\fP(),
Packit 08bd4c
\fB\%archive_read_disk_set_uname_lookup\fP(),
Packit 08bd4c
\fB\%archive_read_disk_set_user_lookup\fP()
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_skip_callback\fP()
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_read_extract_set_skip_file\fP(),
Packit 08bd4c
\fB\%archive_write_disk_set_skip_file\fP(),
Packit 08bd4c
\fB\%archive_write_set_skip_file\fP()
Packit 08bd4c
.IP \(bu
Packit 08bd4c
\fB\%archive_write_disk_set_group_lookup\fP(),
Packit 08bd4c
\fB\%archive_write_disk_set_user_lookup\fP()
Packit 08bd4c
.RE
Packit 08bd4c
.PP
Packit 08bd4c
Where these functions or their arguments took or returned
Packit 08bd4c
Tn gid_t,
Packit 08bd4c
Tn ino_t,
Packit 08bd4c
Tn off_t,
Packit 08bd4c
or
Packit 08bd4c
Tn uid_t
Packit 08bd4c
they now take or return
Packit 08bd4c
Tn int64_t
Packit 08bd4c
or equivalent.
Packit 08bd4c
.SS 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
.RS 5
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_position_compressed\fP(), \fB\%archive_position_uncompressed\fP()
Packit 08bd4c
\fB\%archive_filter_bytes\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_compression\fP()
Packit 08bd4c
\fB\%archive_filter_code\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_compression_name\fP()
Packit 08bd4c
\fB\%archive_filter_name\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_finish\fP(), \fB\%archive_write_finish\fP()
Packit 08bd4c
\fB\%archive_read_free\fP(),
Packit 08bd4c
\fB\%archive_write_free\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_open_file\fP(), \fB\%archive_write_open_file\fP()
Packit 08bd4c
\fB\%archive_read_open_filename\fP(),
Packit 08bd4c
\fB\%archive_write_open_filename\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_all\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_all\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_bzip2\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_bzip2\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_compress\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_compress\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_gzip\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_gzip\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_lzip\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_lzip\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_lzma\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_lzma\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_none\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_none\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_program\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_program\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_program_signature\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_program_signature\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_rpm\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_rpm\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_uu\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_uu\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_support_compression_xz\fP()
Packit 08bd4c
\fB\%archive_read_support_filter_xz\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_compression_bzip2\fP()
Packit 08bd4c
\fB\%archive_write_add_filter_bzip2\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_compression_compress\fP()
Packit 08bd4c
\fB\%archive_write_add_filter_compress\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_compression_gzip\fP()
Packit 08bd4c
\fB\%archive_write_add_filter_gzip\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_compression_lzip\fP()
Packit 08bd4c
\fB\%archive_write_add_filter_lzip\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_compression_lzma\fP()
Packit 08bd4c
\fB\%archive_write_add_filter_lzma\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_compression_none\fP()
Packit 08bd4c
\fB\%archive_write_add_filter_none\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_compression_program\fP()
Packit 08bd4c
\fB\%archive_write_add_filter_program\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_compression_filter\fP()
Packit 08bd4c
\fB\%archive_write_add_filter_filter\fP()
Packit 08bd4c
.RE
Packit 08bd4c
.SS 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
.RS 5
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_api_feature\fP()
Packit 08bd4c
\fB\%archive_version_number\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_api_version\fP()
Packit 08bd4c
\fB\%archive_version_number\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_version\fP()
Packit 08bd4c
\fB\%archive_version_string\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_version_stamp\fP()
Packit 08bd4c
\fB\%archive_version_number\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_set_filter_options\fP()
Packit 08bd4c
\fB\%archive_read_set_options\fP()
Packit 08bd4c
or
Packit 08bd4c
\fB\%archive_read_set_filter_option\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_read_set_format_options\fP()
Packit 08bd4c
\fB\%archive_read_set_options\fP()
Packit 08bd4c
or
Packit 08bd4c
\fB\%archive_read_set_format_option\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_filter_options\fP()
Packit 08bd4c
\fB\%archive_write_set_options\fP()
Packit 08bd4c
or
Packit 08bd4c
\fB\%archive_write_set_filter_option\fP()
Packit 08bd4c
.TP
Packit 08bd4c
\fB\%archive_write_set_format_options\fP()
Packit 08bd4c
\fB\%archive_write_set_options\fP()
Packit 08bd4c
or
Packit 08bd4c
\fB\%archive_write_set_format_option\fP()
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_API_FEATURE
Packit 08bd4c
.BR ARCHIVE_VERSION_NUMBER
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_API_VERSION
Packit 08bd4c
.BR ARCHIVE_VERSION_NUMBER
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_VERSION_STAMP
Packit 08bd4c
.BR ARCHIVE_VERSION_NUMBER
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_LIBRARY_VERSION
Packit 08bd4c
.BR ARCHIVE_VERSION_STRING
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_NONE
Packit 08bd4c
.BR ARCHIVE_FILTER_NONE
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_GZIP
Packit 08bd4c
.BR ARCHIVE_FILTER_GZIP
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_BZIP2
Packit 08bd4c
.BR ARCHIVE_FILTER_BZIP2
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_COMPRESS
Packit 08bd4c
.BR ARCHIVE_FILTER_COMPRESS
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_PROGRAM
Packit 08bd4c
.BR ARCHIVE_FILTER_PROGRAM
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_LZMA
Packit 08bd4c
.BR ARCHIVE_FILTER_LZMA
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_XZ
Packit 08bd4c
.BR ARCHIVE_FILTER_XZ
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_UU
Packit 08bd4c
.BR ARCHIVE_FILTER_UU
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_RPM
Packit 08bd4c
.BR ARCHIVE_FILTER_RPM
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_COMPRESSION_LZIP
Packit 08bd4c
.BR ARCHIVE_FILTER_LZIP
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_BYTES_PER_RECORD
Packit 08bd4c
.RS 4
Packit 08bd4c
512
Packit 08bd4c
.RE
Packit 08bd4c
.TP
Packit 08bd4c
.BR ARCHIVE_DEFAULT_BYTES_PER_BLOCK
Packit 08bd4c
.RS 4
Packit 08bd4c
10240
Packit 08bd4c
.RE
Packit 08bd4c
.RE
Packit 08bd4c
.SH SEE ALSO
Packit 08bd4c
.ad l
Packit 08bd4c
\fBlibarchive\fP(3),
Packit 08bd4c
\fBarchive_read\fP(3),
Packit 08bd4c
\fBarchive_read_filter\fP(3),
Packit 08bd4c
\fBarchive_read_format\fP(3),
Packit 08bd4c
\fBarchive_read_set_options\fP(3),
Packit 08bd4c
\fBarchive_write\fP(3),
Packit 08bd4c
\fBarchive_write_filter\fP(3),
Packit 08bd4c
\fBarchive_write_format\fP(3),
Packit 08bd4c
\fBarchive_write_set_options\fP(3),
Packit 08bd4c
\fBarchive_util\fP(3)