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

名称

archive_read_data archive_read_data_block, archive_read_data_skip, archive_read_data_into_fdストリーミングアーカイブを読み込むための関数

ライブラリ

ストリーミングアーカイブライブラリ (libarchive, -larchive)

書式

#include < archive.h>

ssize_t
archive_read_data( struct archive *, void *buff, size_t len);

int
archive_read_data_block( struct archive *, const void **buff, size_t *len, off_t *offset);

int
archive_read_data_skip( struct archive *);

int
archive_read_data_into_fd( struct archive *, int fd);

解説

archive_read_data()
今、読み込んだヘッダに関連したデータを読み込む。内部的に、これは、呼び出し側が、データの 1 つの連続的なストリームを見ることができるように、 archive_read_data_block() を呼び出す便利な関数で、あらゆるギャップをヌル文字で満たします。
archive_read_data_block()
このエントリのために次の利用可能なデータのブロックを返します。 archive_read_data() と異なり、 archive_read_data_block() 関数は、データをコピーすることを回避し、いくつかのアーカイブ形式によってサポートされるように、利用者が正確にスパースファイルを扱うことができます。ライブラリは、オフセットが増加し、ブロックがオーバラップしないことを保証します。この関数から返されたブロックは、圧縮と内部バッファの最適化により、ディスクから読み込まれたブロックサイズよりはるかに大きくなるかもしれないことに注意してください。
archive_read_data_skip()
このアーカイブエントリのためのデータをすべてスキップするために繰り返し archive_read_data_block() を呼び出す便利な関数。この関数は、前のエントリが完全に消費されなかったなら、 archive_read_next_header2() によって自動的に呼び出されることに注意してください。
archive_read_data_into_fd()
提供されるファイル記述子へのすべてのエントリをコピーするために繰り返し archive_read_data_block() を呼び出す便利な関数。

戻り値

ほとんどの関数は、成功すれば、0 を返し、エラーのとき 0 以外を返します。あり得る返りコードは、次の通りです: ARCHIVE_OK (操作は、成功しました)、 ARCHIVE_WARN (操作は、成功しましたが、クリティカルでないエラーに遭遇しました)、 ARCHIVE_EOF (アーカイブの終了に遭遇しました)、 ARCHIVE_RETRY (操作は、失敗しましたが、再び試みることができます) と ARCHIVE_FATAL (致命的なエラーがありました;アーカイブは、直ちにクローズされなければなりません)。

archive_read_data() は、実際に読み込まれたバイトのカウントを返すか、またはエントリの終わりで 0 を返します。エラーのとき、 ARCHIVE_FATAL, ARCHIVE_WARN または ARCHIVE_RETRY の値が返されます。

エラー

詳細なエラーコードとテキスト形式の記述は、 archive_errno() と archive_error_string() 関数から利用可能です。
February 2, 2012 FreeBSD