.\" Copyright (C) Andreas Gruenbacher, February 2001
.\" Copyright (C) Silicon Graphics Inc, September 2001
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" .
.\" %%%LICENSE_END
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\"
.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI
.\" all rights reserved.
.\" Translated Tue Jul 8 04:17:12 JST 2003
.\" by Akihiro MOTOKI
.\" Updated 2013-05-01, Akihiro MOTOKI
.\"
.TH LISTXATTR 2 2014\-02\-06 Linux "Linux Programmer's Manual"
.SH 名前
listxattr, llistxattr, flistxattr \- 拡張属性の名前リストを得る
.SH 書式
.fam C
.nf
\fB#include \fP
\fB#include \fP
.sp
\fBssize_t listxattr(const char\ *\fP\fIpath\fP\fB, char\ *\fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP
\fBssize_t llistxattr(const char\ *\fP\fIpath\fP\fB, char\ *\fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP
\fBssize_t flistxattr(int \fP\fIfd\fP\fB, char\ *\fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP
.fi
.fam T
.SH 説明
拡張属性は、inode (ファイル、ディレクトリ、シンボリックリンク等) に 関連付けられた \fIname\fP:\fIvalue\fP の対である。
これらは、システム上のすべての inode に関連付けられた通常の属性 (\fBstat\fP(2) が返すデータ) を拡張するものである。
拡張属性のコンセプトは \fBattr\fP(5) に書かれている。
.PP
\fBlistxattr\fP() は、ファイルシステム内の指定された \fIpath\fP に対応する拡張属性の名前リストを取得する。取得したリストは
\fIlist\fP に格納される。 \fIlist\fP は呼び出し側で確保するバッファーで、引き数 \fIsize\fP でバッファーのサイズを (バイト単位で)
指定する。リストは名前の集合で、ヌル終端された文字列が連続して並んでいる。呼び出したプロセスがアクセスする権限のない拡張属性の名前は、リストに含まれない。拡張属性の名前の
\fIlist\fP の長さが返される。
.PP
\fBllistxattr\fP() は \fBlistxattr\fP() と同じだが、シンボリックリンクの場合に、リンクが参照しているファイル
ではなく、リンクそのものの拡張属性の名前リストを取得する点だけが異なる。
.PP
\fBflistxattr\fP() は \fBlistxattr\fP() と同じだが、 \fIpath\fP の代わりに \fIfd\fP
で参照されたオープン済みファイルの情報だけを取得する点が異なる (\fIfiledes\fP は \fBopen\fP(2) によって返される)。
.PP
個々の拡張属性の \fIname\fP は普通のヌル終端された文字列である。 名前には、名前空間を表す接頭辞 (prefix) が含まれる; 個々の
inode に対して、互いに独立な名前空間が複数あってもよい。
.PP
\fIsize\fP に 0 を指定して空のバッファーをこれらのシステムコールに渡すことができ、 この場合には拡張属性の名前リストの現在のサイズが返される。
この方法は名前リストを保持するのに十分な大きさのバッファーサイズを 見積もるのに使うことができる、
.SS Example
返される名前の \fIlist\fP は、ヌル終端された文字列の配列 (属性名はヌルバイト (\(aq\e0\(aq) で区切られている)
で、各要素は整列されている訳ではない。 以下に例を示す:
.fam C
.RS
.nf
user.name1\e0system.name1\e0user.name2\e0
.fi
.RE
.fam T
.P
拡張属性を使って POSIX ACL を実装している ext2、ext3、XFS のようなファイル システムでは、返される \fIlist\fP
は以下のようになることだろう:
.fam C
.RS
.nf
system.posix_acl_access\e0system.posix_acl_default\e0
.fi
.RE
.fam T
.SH 返り値
成功した場合、拡張属性の名前リストの長さを表す非負の数が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。
.SH エラー
.TP
\fBENOTSUP\fP
拡張属性がそのファイルシステムでサポートされていない、 もしくは無効になっている。
.TP
\fBERANGE\fP
\fIlist\fP バッファーの大きさ \fIsize\fP が結果を保持するのに十分な大きさでなかった。
.PP
上記に加えて、 \fBstat\fP(2) に書かれているエラーが発生する場合もある。
.SH バージョン
これらのシステムコールはカーネル 2.4 以降の Linux で利用できる。 glibc でのサポートはバージョン 2.3 以降で行われている。
.SH 準拠
.\" .SH AUTHORS
.\" Andreas Gruenbacher,
.\" .RI < a.gruenbacher@computer.org >
.\" and the SGI XFS development team,
.\" .RI < linux-xfs@oss.sgi.com >.
.\" Please send any bug reports or comments to these addresses.
これらのシステムコールは Linux 独自である。
.SH 関連項目
\fBgetfattr\fP(1), \fBsetfattr\fP(1), \fBgetxattr\fP(2), \fBopen\fP(2),
\fBremovexattr\fP(2), \fBsetxattr\fP(2), \fBstat\fP(2), \fBattr\fP(5), \fBsymlink\fP(7)
.SH この文書について
この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。