Blame doc/text/libarchive_changes.3.txt

Packit 08bd4c
LIBARCHIVE_CHANGES(3)	 BSD Library Functions Manual	 LIBARCHIVE_CHANGES(3)
Packit 08bd4c
Packit 08bd4c
NAME
Packit 08bd4c
     libarchive_changes — changes in libarchive interface
Packit 08bd4c
Packit 08bd4c
CHANGES IN LIBARCHIVE 3
Packit 08bd4c
     This page describes user-visible changes in libarchive3, and lists public
Packit 08bd4c
     functions and other symbols changed, deprecated or removed in
Packit 08bd4c
     libarchive3, along with their replacements if any.
Packit 08bd4c
Packit 08bd4c
   Multiple Filters
Packit 08bd4c
     Libarchive2 permitted a single (input or output) filter active on an ar‐
Packit 08bd4c
     chive.  Libarchive3 extends this into a variable-length stack.  Where
Packit 08bd4c
     archive_write_set_compression_XXX() would replace any existing filter,
Packit 08bd4c
     archive_write_add_filter_XXX() extends the write pipeline with another
Packit 08bd4c
     filter.
Packit 08bd4c
Packit 08bd4c
   Character Set Handling
Packit 08bd4c
     Libarchive2 assumed that the local platform uses Unicode as the native
Packit 08bd4c
     wchar_t encoding, which is true on Windows, modern Linux, and a few other
Packit 08bd4c
     systems, but is certainly not universal.  As a result, pax format ar‐
Packit 08bd4c
     chives were written incorrectly on some systems, since pax format
Packit 08bd4c
     requires UTF-8 and libarchive 2 incorrectly assumed that wchar_t strings
Packit 08bd4c
     can be easily converted to 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 “default character set for the
Packit 08bd4c
     archive”.	To support this, archive_entry objects can now be bound to a
Packit 08bd4c
     particular archive when they are created.	The automatic character set
Packit 08bd4c
     conversions performed by archive_entry objects when reading and writing
Packit 08bd4c
     filenames, usernames, and other strings will now use an appropriate
Packit 08bd4c
     default character set:
Packit 08bd4c
Packit 08bd4c
     If the archive_entry 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)) will be used if nothing else is specified.
Packit 08bd4c
Packit 08bd4c
     Libarchive3 also introduces charset options to many of the archive read‐
Packit 08bd4c
     ers and writers to control the character set that will be used for file‐
Packit 08bd4c
     names written in those archives.  When possible, this will be set auto‐
Packit 08bd4c
     matically based on information in the archive itself.  Combining this
Packit 08bd4c
     with the notion of a default character set for the archive should allow
Packit 08bd4c
     you to configure libarchive to read archives from other platforms and
Packit 08bd4c
     have the filenames and other information transparently converted to the
Packit 08bd4c
     character encoding suitable for your application.
Packit 08bd4c
Packit 08bd4c
   Prototype Changes
Packit 08bd4c
     These changes break binary compatibility; libarchive3 has a new shared
Packit 08bd4c
     library version to reflect these changes.	The library now uses portable
Packit 08bd4c
     wide types such as int64_t instead of less-portable types such as off_t,
Packit 08bd4c
     gid_t, uid_t, and ino_t.
Packit 08bd4c
Packit 08bd4c
     There are a few cases where these changes will affect your source code:
Packit 08bd4c
Packit 08bd4c
     ·	  In some cases, libarchive's wider types will introduce the possibil‐
Packit 08bd4c
	  ity of truncation: for example, on a system with a 16-bit uid_t, you
Packit 08bd4c
	  risk having uid 65536 be truncated to uid 0, which can cause serious
Packit 08bd4c
	  security problems.
Packit 08bd4c
Packit 08bd4c
     ·	  Typedef function pointer types will be incompatible.	For example,
Packit 08bd4c
	  if you define custom skip callbacks, you may have to use code simi‐
Packit 08bd4c
	  lar to the following if you want to support building against
Packit 08bd4c
	  libarchive2 and libarchive3:
Packit 08bd4c
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
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
     Affected functions:
Packit 08bd4c
Packit 08bd4c
     ·	 archive_entry_gid(), archive_entry_set_gid()
Packit 08bd4c
     ·	 archive_entry_uid(), archive_entry_set_uid()
Packit 08bd4c
     ·	 archive_entry_ino(), archive_entry_set_ino()
Packit 08bd4c
     ·	 archive_read_data_block(), archive_write_data_block()
Packit 08bd4c
     ·	 archive_read_disk_gname(), archive_read_disk_uname()
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
     ·	 archive_skip_callback()
Packit 08bd4c
     ·	 archive_read_extract_set_skip_file(),
Packit 08bd4c
	 archive_write_disk_set_skip_file(), archive_write_set_skip_file()
Packit 08bd4c
     ·	 archive_write_disk_set_group_lookup(),
Packit 08bd4c
	 archive_write_disk_set_user_lookup()
Packit 08bd4c
Packit 08bd4c
     Where these functions or their arguments took or returned gid_t, ino_t,
Packit 08bd4c
     off_t, or uid_t they now take or return int64_t or equivalent.
Packit 08bd4c
Packit 08bd4c
   Deprecated Symbols
Packit 08bd4c
     Symbols deprecated in libarchive3 will be removed in libarchive4.	These
Packit 08bd4c
     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
Packit 08bd4c
     archive_compression()
Packit 08bd4c
	  archive_filter_code()
Packit 08bd4c
Packit 08bd4c
     archive_compression_name()
Packit 08bd4c
	  archive_filter_name()
Packit 08bd4c
Packit 08bd4c
     archive_read_finish(), archive_write_finish()
Packit 08bd4c
	  archive_read_free(), archive_write_free()
Packit 08bd4c
Packit 08bd4c
     archive_read_open_file(), archive_write_open_file()
Packit 08bd4c
	  archive_read_open_filename(), archive_write_open_filename()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_all()
Packit 08bd4c
	  archive_read_support_filter_all()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_bzip2()
Packit 08bd4c
	  archive_read_support_filter_bzip2()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_compress()
Packit 08bd4c
	  archive_read_support_filter_compress()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_gzip()
Packit 08bd4c
	  archive_read_support_filter_gzip()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_lzip()
Packit 08bd4c
	  archive_read_support_filter_lzip()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_lzma()
Packit 08bd4c
	  archive_read_support_filter_lzma()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_none()
Packit 08bd4c
	  archive_read_support_filter_none()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_program()
Packit 08bd4c
	  archive_read_support_filter_program()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_program_signature()
Packit 08bd4c
	  archive_read_support_filter_program_signature()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_rpm()
Packit 08bd4c
	  archive_read_support_filter_rpm()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_uu()
Packit 08bd4c
	  archive_read_support_filter_uu()
Packit 08bd4c
Packit 08bd4c
     archive_read_support_compression_xz()
Packit 08bd4c
	  archive_read_support_filter_xz()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_compression_bzip2()
Packit 08bd4c
	  archive_write_add_filter_bzip2()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_compression_compress()
Packit 08bd4c
	  archive_write_add_filter_compress()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_compression_gzip()
Packit 08bd4c
	  archive_write_add_filter_gzip()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_compression_lzip()
Packit 08bd4c
	  archive_write_add_filter_lzip()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_compression_lzma()
Packit 08bd4c
	  archive_write_add_filter_lzma()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_compression_none()
Packit 08bd4c
	  archive_write_add_filter_none()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_compression_program()
Packit 08bd4c
	  archive_write_add_filter_program()
Packit 08bd4c
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, were
Packit 08bd4c
     deprecated in libarchive2, and are not part of libarchive3.
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()
Packit 08bd4c
	  archive_version_string()
Packit 08bd4c
Packit 08bd4c
     archive_version_stamp()
Packit 08bd4c
	  archive_version_number()
Packit 08bd4c
Packit 08bd4c
     archive_read_set_filter_options()
Packit 08bd4c
	  archive_read_set_options() or archive_read_set_filter_option()
Packit 08bd4c
Packit 08bd4c
     archive_read_set_format_options()
Packit 08bd4c
	  archive_read_set_options() or archive_read_set_format_option()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_filter_options()
Packit 08bd4c
	  archive_write_set_options() or archive_write_set_filter_option()
Packit 08bd4c
Packit 08bd4c
     archive_write_set_format_options()
Packit 08bd4c
	  archive_write_set_options() or 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
	  512
Packit 08bd4c
Packit 08bd4c
     ARCHIVE_DEFAULT_BYTES_PER_BLOCK
Packit 08bd4c
	  10240
Packit 08bd4c
Packit 08bd4c
SEE ALSO
Packit 08bd4c
     libarchive(3), archive_read(3), archive_read_filter(3),
Packit 08bd4c
     archive_read_format(3), archive_read_set_options(3), archive_write(3),
Packit 08bd4c
     archive_write_filter(3), archive_write_format(3),
Packit 08bd4c
     archive_write_set_options(3), archive_util(3)
Packit 08bd4c
Packit 08bd4c
BSD			       December 23, 2011			   BSD