Blame doc/wiki/ManPageLibarchiveChanges3.wiki

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]]