summaryrefslogtreecommitdiff
path: root/archivers/libarchive/files/doc/man/libarchive_changes.3
diff options
context:
space:
mode:
Diffstat (limited to 'archivers/libarchive/files/doc/man/libarchive_changes.3')
-rw-r--r--archivers/libarchive/files/doc/man/libarchive_changes.3340
1 files changed, 340 insertions, 0 deletions
diff --git a/archivers/libarchive/files/doc/man/libarchive_changes.3 b/archivers/libarchive/files/doc/man/libarchive_changes.3
new file mode 100644
index 00000000000..e3ecb318d04
--- /dev/null
+++ b/archivers/libarchive/files/doc/man/libarchive_changes.3
@@ -0,0 +1,340 @@
+.TH LIBARCHIVE_CHANGES 3 "December 23, 2011" ""
+.SH NAME
+.ad l
+\- 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.
+.PP
+.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
+\fBlibarchive\fP(3),
+\fBarchive_read\fP(3),
+\fBarchive_read_filter\fP(3),
+\fBarchive_read_format\fP(3),
+\fBarchive_read_set_options\fP(3),
+\fBarchive_write\fP(3),
+\fBarchive_write_filter\fP(3),
+\fBarchive_write_format\fP(3),
+\fBarchive_write_set_options\fP(3),
+\fBarchive_util\fP(3)