EN JA
LIBARCHIVE_CHANGES(3)
LIBARCHIVE_CHANGES(3) FreeBSD Library Functions Manual LIBARCHIVE_CHANGES(3)

名称

libarchive インタフェースの変更

LIBARCHIVE 3 の変更

このページは、libarchive3 のユーザに目に見える変更を記述し、もしあるなら、それらの置き換えとともに、libarchive3 で変更されたか、非推奨であるか、または削除されたパブリック関数と他のシンボルをリストしています。

複数のフィルタ

libarchive2 は、アーカイブでアクティブな単一の (入力または出力) フィルタを許可していました。 libarchive3 は、これを可変長スタックに拡張しています。 archive_write_set_compression_XXX() があらゆる既存のフィルタを置き換えるところで、 archive_write_add_filter_XXX() は、別のフィルタがある書き込みパイプラインを拡張しています。

文字セットの取り扱い

libarchive2 は、ローカルなプラットフォームが、 Windows, 現代の Linux と他の少数のシステムで真実である生粋の wchar_t エンコード (符号化) として Unicode を使用しますが、確実に世界共通でないと仮定していました。結果として、 UTF-8 を要求し、libarchive 2 が wchar_t 文字列を容易に UTF-8 に変換することができると不正確に仮定したので、pax 形式のアーカイブは、いくつかのシステムで不正確に書き込まれました。

libarchive3 は、文字セットの間で変換するために標準の iconv ライブラリを使用し、“アーカイブのためのデフォルト文字セット”についての概念を導入しています。これをサポートするために、今、それらが作成されるとき、特別のアーカイブに archive_entry オブジェクトを結び付けることができます。ファイル名、ユーザ名と他の文字列を読み込み、書き込みするとき、 archive_entry オブジェクトによって行なわれた自動的な文字セットの変換は、今、適切なデフォルト文字のセットを使用します:

archive_entry オブジェクトがアーカイブに結び付けられているなら、それは、そのアーカイブのためのデフォルトの文字セットを使用します。

他のものが何も指定されないなら、 ( nl_langinfo( CHARSET) によって返される) プラットフォームのデフォルトの文字のエンコード (符号化) が使用されます。

また、libarchive3 は、それらのアーカイブに書き込まれたファイル名のために使用される文字セットを制御するために、多くのアーカイブリーダ (reader) とライタ (writer) への charset オプションを導入しています。可能なとき、これは、アーカイブ自体の情報に基づいて自動的に設定されます。アーカイブのためのデフォルトの文字セットについての概念とこれを組み合わせることによって、他のプラットフォームからアーカイブを読み込む libarchive を設定することができ、ファイル名と他の情報は、利用者のアプリケーションに適している文字エンコード (符号化) に透過的に変換されます。

プロトタイプの変更

これらの変更は、バイナリ互換性を壊します。 libarchive3 には、これらの変更を反映するために新しい共有ライブラリのバージョンがあります。ライブラリは、今、 off_t, gid_t, uid_t と ino_t のような移植性の少ないタイプ式の代わりに int64_t のような移植性があるワイドタイプを使用します。

これらの変更が利用者のソースコードに影響する場合が少しあります:

  • ある場合には、libarchive のワイドタイプが、切り捨ての可能性を導入します: 例えば、16 ビットの uid_t があるシステムで、重大なセキュリティ問題を引き起こすかもしれない、uid 65536 が uid 0 に切り捨てられるという危険があります。
  • typedef 関数ポインタタイプは、互換性がありません。例えば、コールバックをスキップするカスタムを定義するなら、そして、libarchive2 と libarchive3 に対して構築することをサポートしたいなら、次に似たコードを使用しなければならないかもしれません。

    #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) 
    { 
        ... 実装 ... 
    }

影響を受ける関数:

  • archive_entry_gid(), archive_entry_set_gid()
  • archive_entry_uid(), archive_entry_set_uid()
  • archive_entry_ino(), archive_entry_set_ino()
  • archive_read_data_block(), archive_write_data_block()
  • archive_read_disk_gname(), archive_read_disk_uname()
  • archive_read_disk_set_gname_lookup(), archive_read_disk_set_group_lookup(), archive_read_disk_set_uname_lookup(), archive_read_disk_set_user_lookup()
  • archive_skip_callback()
  • archive_read_extract_set_skip_file(), archive_write_disk_set_skip_file(), archive_write_set_skip_file()
  • archive_write_disk_set_group_lookup(), archive_write_disk_set_user_lookup()

これらの関数またはそれらの引数が gid_t, ino_t, off_t または uid_t を取るか、返すところで、それらは、今、 int64_t または同等のものを取るか、または返します。

非推奨のシンボル

libarchive3 で非推奨とされたシンボルは、libarchive4 で削除されるでしょう。もしあるなら、それらの置き換えとともに、これらのシンボルは、以下にリストされます:
archive_position_compressed(), archive_position_uncompressed()
archive_filter_bytes()
archive_compression()
archive_filter_code()
archive_compression_name()
archive_filter_name()
archive_read_finish(), archive_write_finish()
archive_read_free(), archive_write_free()
archive_read_open_file(), archive_write_open_file()
archive_read_open_filename(), archive_write_open_filename()
archive_read_support_compression_all()
archive_read_support_filter_all()
archive_read_support_compression_bzip2()
archive_read_support_filter_bzip2()
archive_read_support_compression_compress()
archive_read_support_filter_compress()
archive_read_support_compression_gzip()
archive_read_support_filter_gzip()
archive_read_support_compression_lzip()
archive_read_support_filter_lzip()
archive_read_support_compression_lzma()
archive_read_support_filter_lzma()
archive_read_support_compression_none()
archive_read_support_filter_none()
archive_read_support_compression_program()
archive_read_support_filter_program()
archive_read_support_compression_program_signature()
archive_read_support_filter_program_signature()
archive_read_support_compression_rpm()
archive_read_support_filter_rpm()
archive_read_support_compression_uu()
archive_read_support_filter_uu()
archive_read_support_compression_xz()
archive_read_support_filter_xz()
archive_write_set_compression_bzip2()
archive_write_add_filter_bzip2()
archive_write_set_compression_compress()
archive_write_add_filter_compress()
archive_write_set_compression_gzip()
archive_write_add_filter_gzip()
archive_write_set_compression_lzip()
archive_write_add_filter_lzip()
archive_write_set_compression_lzma()
archive_write_add_filter_lzma()
archive_write_set_compression_none()
archive_write_add_filter_none()
archive_write_set_compression_program()
archive_write_add_filter_program()
archive_write_set_compression_filter()
archive_write_add_filter_filter()

削除されたシンボル

もしあるなら、それらの置き換えとともに下記にリストされた、これらのシンボルは、 libarchive2 で非推奨となり、libarchive3 の一部ではありません。
archive_api_feature()
archive_version_number()
archive_api_version()
archive_version_number()
archive_version()
archive_version_string()
archive_version_stamp()
archive_version_number()
archive_read_set_filter_options()
archive_read_set_options() または archive_read_set_filter_option()
archive_read_set_format_options()
archive_read_set_options() または archive_read_set_format_option()
archive_write_set_filter_options()
archive_write_set_options() または archive_write_set_filter_option()
archive_write_set_format_options()
archive_write_set_options() または archive_write_set_format_option()
ARCHIVE_API_FEATURE
ARCHIVE_VERSION_NUMBER
ARCHIVE_API_VERSION
ARCHIVE_VERSION_NUMBER
ARCHIVE_VERSION_STAMP
ARCHIVE_VERSION_NUMBER
ARCHIVE_LIBRARY_VERSION
ARCHIVE_VERSION_STRING
ARCHIVE_COMPRESSION_NONE
ARCHIVE_FILTER_NONE
ARCHIVE_COMPRESSION_GZIP
ARCHIVE_FILTER_GZIP
ARCHIVE_COMPRESSION_BZIP2
ARCHIVE_FILTER_BZIP2
ARCHIVE_COMPRESSION_COMPRESS
ARCHIVE_FILTER_COMPRESS
ARCHIVE_COMPRESSION_PROGRAM
ARCHIVE_FILTER_PROGRAM
ARCHIVE_COMPRESSION_LZMA
ARCHIVE_FILTER_LZMA
ARCHIVE_COMPRESSION_XZ
ARCHIVE_FILTER_XZ
ARCHIVE_COMPRESSION_UU
ARCHIVE_FILTER_UU
ARCHIVE_COMPRESSION_RPM
ARCHIVE_FILTER_RPM
ARCHIVE_COMPRESSION_LZIP
ARCHIVE_FILTER_LZIP
ARCHIVE_BYTES_PER_RECORD
512
ARCHIVE_DEFAULT_BYTES_PER_BLOCK
10240
December 23, 2011 FreeBSD