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