名 前
listxattr, llistxattr, flistxattr − 拡 張 属 性 の 名 前 リ ス ト を 得 る
書 式
#include
<sys/types.h>
#include <sys/xattr.h>
ssize_t
listxattr(const char *path,
char *list, size_t size);
ssize_t llistxattr(const char *path,
char *list, size_t size);
ssize_t flistxattr(int fd,
char *list, size_t
size);
説 明
拡 張 属 性 は 、 inode (フ ァ イ ル 、 デ ィ レ ク ト リ 、 シ ン ボ リ ッ ク リ ン ク 等 ) に 関 連 付 け ら れ た name:value の 対 で あ る 。 こ れ ら は 、 シ ス テ ム 上 の す べ て の inode に 関 連 付 け ら れ た 通 常 の 属 性 (stat(2) が 返 す デ ー タ ) を 拡 張 す る も の で あ る 。 拡 張 属 性 の コ ン セ プ ト は attr(5) に 書 か れ て い る 。
listxattr() は 、 フ ァ イ ル シ ス テ ム 内 の 指 定 さ れ た path に 対 応 す る 拡 張 属 性 の 名 前 リ ス ト を 取 得 す る 。 取 得 し た リ ス ト は list に 格 納 さ れ る 。 list は 呼 び 出 し 側 で 確 保 す る バ ッ フ ァ ー で 、 引 き 数 size で バ ッ フ ァ ー の サ イ ズ を (バ イ ト 単 位 で ) 指 定 す る 。 リ ス ト は 名 前 の 集 合 で 、 ヌ ル 終 端 さ れ た 文 字 列 が 連 続 し て 並 ん で い る 。 呼 び 出 し た プ ロ セ ス が ア ク セ ス す る 権 限 の な い 拡 張 属 性 の 名 前 は 、 リ ス ト に 含 ま れ な い 。 拡 張 属 性 の 名 前 の list の 長 さ が 返 さ れ る 。
llistxattr() は listxattr() と 同 じ だ が 、 シ ン ボ リ ッ ク リ ン ク の 場 合 に 、 リ ン ク が 参 照 し て い る フ ァ イ ル で は な く 、 リ ン ク そ の も の の 拡 張 属 性 の 名 前 リ ス ト を 取 得 す る 点 だ け が 異 な る 。
flistxattr() は listxattr() と 同 じ だ が 、 path の 代 わ り に fd で 参 照 さ れ た オ ー プ ン 済 み フ ァ イ ル の 情 報 だ け を 取 得 す る 点 が 異 な る (filedes は open(2) に よ っ て 返 さ れ る )。 個 々 の 拡 張 属 性 の name は 普 通 の ヌ ル 終 端 さ れ た 文 字 列 で あ る 。 名 前 に は 、 名 前 空 間 を 表 す 接 頭 辞 (prefix) が 含 ま れ る ; 個 々 の inode に 対 し て 、 互 い に 独 立 な 名 前 空 間 が 複 数 あ っ て も よ い 。
size に 0 を 指 定 し て 空 の バ ッ フ ァ ー を こ れ ら の シ ス テ ム コ ー ル に 渡 す こ と が で き 、 こ の 場 合 に は 拡 張 属 性 の 名 前 リ ス ト の 現 在 の サ イ ズ が 返 さ れ る 。 こ の 方 法 は 名 前 リ ス ト を 保 持 す る の に 十 分 な 大 き さ の バ ッ フ ァ ー サ イ ズ を 見 積 も る の に 使 う こ と が で き る 、
Example 返 さ れ る 名 前 の list は 、 ヌ ル 終 端 さ れ た 文 字 列 の 配 列 (属 性 名 は ヌ ル バ イ ト ('\0') で 区 切 ら れ て い る ) で 、 各 要 素 は 整 列 さ れ て い る 訳 で は な い 。 以 下 に 例 を 示 す :
user.name1\0system.name1\0user.name2\0 拡 張 属 性 を 使 っ て POSIX ACL を 実 装 し て い る ext2、 ext3、 XFS の よ う な フ ァ イ ル シ ス テ ム で は 、 返 さ れ る list は 以 下 の よ う に な る こ と だ ろ う :
system.posix_acl_access\0system.posix_acl_default\0
返 り 値
成 功 し た 場 合 、 拡 張 属 性 の 名 前 リ ス ト の 長 さ を 表 す 非 負 の 数 が 返 さ れ る 。 失 敗 し た 場 合 、 −1 が 返 さ れ 、 errno に 適 切 な 値 が セ ッ ト さ れ る 。
エ ラ ー
ENOTSUP 拡 張 属 性 が そ の フ ァ イ ル シ ス テ ム で サ ポ ー ト さ れ て い な い 、 も し く は 無 効 に な っ て い る 。
ERANGE |
list バ ッ フ ァ ー の 大 き さ size が 結 果 を 保 持 す る の に 十 分 な 大 き さ で な か っ た 。 |
上 記 に 加 え て 、 stat(2) に 書 か れ て い る エ ラ ー が 発 生 す る 場 合 も あ る 。
バ ー ジ ョ ン
こ れ ら の シ ス テ ム コ ー ル は カ ー ネ ル 2.4 以 降 の Linux で 利 用 で き る 。 glibc で の サ ポ ー ト は バ ー ジ ョ ン 2.3 以 降 で 行 わ れ て い る 。
準 拠
こ れ ら の シ ス テ ム コ ー ル は Linux 独 自 で あ る 。
関 連 項 目
getfattr(1), setfattr(1), getxattr(2), open(2), removexattr(2), setxattr(2), stat(2), attr(5), symlink(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。