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

名称

archive_entry_stat, archive_entry_copy_stat, archive_entry_filetype, archive_entry_set_filetype, archive_entry_mode, archive_entry_set_mode, archive_entry_size, archive_entry_size_is_set, archive_entry_set_size, archive_entry_unset_size, archive_entry_dev, archive_entry_set_dev, archive_entry_dev_is_set, archive_entry_devmajor, archive_entry_set_devmajor, archive_entry_devminor, archive_entry_set_devminor, archive_entry_ino, archive_entry_set_ino, archive_entry_ino_is_set, archive_entry_ino64, archive_entry_set_ino64, archive_entry_nlink, archive_entry_rdev, archive_entry_set_rdev, archive_entry_rdevmajor, archive_entry_set_rdevmajor, archive_entry_rdevminor, archive_entry_set_rdevminor, — アーカイブエントリの記述を操作するためのアクセサ関数

ライブラリ

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

書式

#include < archive_entry.h>

const struct stat *
archive_entry_stat( struct archive_entry *a);

void
archive_entry_copy_stat( struct archive_entry *a, const struct stat *sb);

mode_t
archive_entry_filetype( struct archive_entry *a);

void
archive_entry_set_filetype( struct archive_entry *a, unsigned int type);

mode_t
archive_entry_mode( struct archive_entry *a);

void
archive_entry_set_mode( struct archive_entry *a, mode_t mode);

int64_t
archive_entry_size( struct archive_entry *a);

int
archive_entry_size_is_set( struct archive_entry *a);

void
archive_entry_set_size( struct archive_entry *a, int64_t size);

void
archive_entry_unset_size( struct archive_entry *a);

dev_t
archive_entry_dev( struct archive_entry *a);

void
archive_entry_set_dev( struct archive_entry *a, dev_t dev);

int
archive_entry_dev_is_set( struct archive_entry *a);

dev_t
archive_entry_devmajor( struct archive_entry *a);

void
archive_entry_set_devmajor( struct archive_entry *a, dev_t major);

dev_t
archive_entry_devminor( struct archive_entry *a);

void
archive_entry_set_devminor( struct archive_entry *a, dev_t minor);

ino_t
archive_entry_ino( struct archive_entry *a);

void
archive_entry_set_ino( struct archive_entry *a, unsigned long ino);

int
archive_entry_ino_is_set( struct archive_entry *a);

int64_t
archive_entry_ino64( struct archive_entry *a);

void
archive_entry_set_ino64( struct archive_entry *a, int64_t ino);

unsigned int
archive_entry_nlink( struct archive_entry *a);

void
archive_entry_set_nlink( struct archive_entry *a, unsigned int count);

dev_t
archive_entry_rdev( struct archive_entry *a);

dev_t
archive_entry_rdevmajor( struct archive_entry *a);

dev_t
archive_entry_rdevminor( struct archive_entry *a);

void
archive_entry_set_rdev( struct archive_entry *a, dev_t dev);

void
archive_entry_set_rdevmajor( struct archive_entry *a, dev_t major);

void
archive_entry_set_rdevminor( struct archive_entry *a, dev_t minor);

解説

struct stat へ/からコピーする

関数 archive_entry_stat() は、アーカイブエントリに格納された様々なフィールドを stat(2) によって使用される形式に変換します。返り値は、 archive_entry_clear() または archive_entry_free() のいずれかが呼び出されるまで、有効なままです。それは、セットアクセサ関数への呼び出しによって影響されません。現在、 struct stat に次の値を設定します: st_atime, st_ctime, st_dev, st_gid, st_ino, st_mode, st_mtime, st_nlink, st_rdev, st_size, st_uid。さらに、時間に関連したフィールドのための st_birthtime と高精度の情報は、それをサポートするプラットフォームに含まれます。

関数 archive_entry_copy_stat() は、プラットフォームの struct stat からフィールドをコピーします。 struct stat によって提供されないフィールドは、変更されません。

一般的なアクセサ関数

関数 archive_entry_filetype() と archive_entry_set_filetype() は、それぞれファイルタイプを取得し、設定します。ファイルタイプは、次の定数の 1 つです:
AE_IFREG
通常ファイル
AE_IFLNK
シンボリックリンク
AE_IFSOCK
ソケット
AE_IFCHR
キャラクタデバイス
AE_IFBLK
ブロックデバイス
AE_IFDIR
ディレクトリ
AE_IFIFO
名前付きパイプ (fifo)
すべてのファイルタイプが、すべてのプラットフォームでサポートされるとは限りません。 stat(2) によって使用される定数は、上記の対応する定数とは異なった数値があるかもしれません。

関数 archive_entry_mode() と archive_entry_set_mode() は、ファイルタイプとパーミッションの組み合わせを取得/設定し、 st_mode と同等なものを提供します。取得するための archive_entry_filetype() と archive_entry_perm()、設定のための archive_entry_set_filetype() と archive_entry_set_perm() の使用が推奨されます。

関数 archive_entry_size() は、ファイルサイズが設定されているなら、ファイルサイズを返し、そうでなければ、0 を返します。その状態を問い合わせるために archive_entry_size() を使用することができます。 archive_entry_set_size() と archive_entry_unset_size() は、それぞれ、サイズを設定し、設定を解除します。

参照 (ハードリンク) の数は、 archive_entry_nlinks() を呼び出すことによって取得でき、 archive_entry_set_nlinks() で設定できます。

ユニークなファイルの識別

関数 archive_entry_dev() と archive_entry_ino64() は、ハードリンクを見つけるために archive_entry_linkify(3) によって使用されます。デバイスのペアと inode は、ハードリンクされたファイルを識別するはずです。

archive_entry_devmajor() と archive_entry_devminor() を使用してデバイスのメジャーとマイナを独立して取得することができます。 archive_entry_set_dev() によって、または archive_entry_set_devmajor() と archive_entry_set_devminor() を使用してメジャーとマイナ番号を組み合わせることによってデバイスを設定することができます。

archive_entry_ino() を使用して inode を取得することができます。これは、たいへん小さいプラットフォーム ino_t を使用する古いインタフェースです。 inode 番号を設定するために、 archive_entry_set_ino64() は、好ましいインタフェースです。

ブロックデバイスとキャラクタデバイスのためのアクセサ関数

ブロックデバイスとキャラクタデバイスは、デバイス番号またはメジャーとマイナ番号のペアを使用して特徴づけられます、組み合わされたデバイス番号は、 archive_device_rdev() で取得でき、 archive_device_set_rdev() で設定できます。メジャー番号とマイナ番号は、 archive_device_rdevmajor(), archive_device_rdevminor() archive_device_set_rdevmajor() と archive_device_set_rdevminor() によってアクセスされます。

組み合わされたデバイス番号をメジャー番頭とマイナ番号に分割するプロセスとそれらを組み合わせる逆のプロセスは、プラットフォームによって異なります。いくつかのアーカイブ形式は、組み合わされた形式を使用しますが、他の形式は、分割された形式を使用します。

February 2, 2012 FreeBSD