名 前
setxattr, lsetxattr, fsetxattr − 拡 張 属 性 の 値 を 設 定 す る
書 式
#include
<sys/types.h>
#include <sys/xattr.h>
int
setxattr(const char *path, const
char *name,
const void *value, size_t
size, int flags);
int lsetxattr(const char *path, const
char *name,
const void *value, size_t
size, int flags);
int fsetxattr(int fd, const
char *name,
const void *value, size_t
size, int flags);
説 明
拡 張 属 性 は 、 inode (フ ァ イ ル 、 デ ィ レ ク ト リ 、 シ ン ボ リ ッ ク リ ン ク 等 ) に 関 連 付 け ら れ た name:value の 対 で あ る 。 こ れ ら は 、 シ ス テ ム 上 の す べ て の inode に 関 連 付 け ら れ た 通 常 の 属 性 (stat(2) が 返 す デ ー タ ) を 拡 張 す る も の で あ る 。 拡 張 属 性 の コ ン セ プ ト は attr(5) に 書 か れ て い る 。
setxattr() は 、 フ ァ イ ル シ ス テ ム 内 の 指 定 さ れ た path に 対 応 す る 、 名 前 name の 拡 張 属 性 の 値 value を 設 定 す る 。 value の size は 必 ず 指 定 し な け れ ば な ら な い 。
lsetxattr() は setxattr() と 同 じ だ が 、 シ ン ボ リ ッ ク リ ン ク の 場 合 に 、 リ ン ク が 参 照 し て い る フ ァ イ ル で は な く 、 リ ン ク そ の も の の 拡 張 属 性 を 設 定 す る 点 だ け が 異 な る 。
fsetxattr() は setxattr() と 同 じ だ が 、 path の 代 わ り に fd で 参 照 さ れ た オ ー プ ン 済 み フ ァ イ ル の 情 報 だ け を 設 定 す る 点 が 異 な る (filedes は open(2) に よ っ て 返 さ れ る )。 拡 張 属 性 の 名 前 は 普 通 の ヌ ル 終 端 さ れ た 文 字 列 で あ る 。 name に は 、 名 前 空 間 を 表 す 接 頭 辞 (prefix) が 含 ま れ る 。 個 々 の inode に 対 し て 、 互 い に 独 立 な 名 前 空 間 が 複 数 あ っ て も よ い 。 拡 張 属 性 の 値 value は 、 あ る 一 定 の 長 さ の 任 意 の テ キ ス ト デ ー タ ま た は バ イ ナ リ デ ー タ の 集 合 で あ る 。 操 作 の 意 味 を 明 確 に す る た め に flags 引 き 数 を 使 用 す る こ と が で き る 。 XATTR_CREATE は 属 性 の 作 成 だ け を 行 う こ と を 指 定 す る 。 指 定 さ れ た 名 前 の 属 性 が す で に 存 在 す る 場 合 は 失 敗 す る 。 XATTR_REPLACE は 属 性 の 置 換 だ け を 行 う こ と を 指 定 す る 。 指 定 さ れ た 名 前 の 属 性 が ま だ 存 在 し な い 場 合 は 失 敗 す る 。 デ フ ォ ル ト で は (フ ラ グ を 指 定 し な い 場 合 )、 拡 張 属 性 は 必 要 な 場 合 は 作 成 さ れ 、 属 性 が す で に 存 在 す る 場 合 は 属 性 値 の 置 換 を 行 う 。
返 り 値
成 功 し た 場 合 、 0 が 返 さ れ る 。 失 敗 し た 場 合 、 −1 が 返 さ れ 、 errno に 適 切 な 値 が セ ッ ト さ れ る 。
エ ラ ー
EDQUOT デ ィ ス ク の ク ォ ー タ 上 限 に 達 し た 。 拡 張 属 性 を 格 納 で き る だ け の 空 き 領 域 が な い こ と を 意 味 す る 。 | |
EEXIST |
XATTR_CREATE が 指 定 さ れ た が 、 そ の 属 性 は す で に 存 在 し て い る 。
ENOATTR
XATTR_REPLACE が 指 定 さ れ た が 、 そ の 属 性 が 存 在 し な い 。 (ENOATTR は <attr/xattr.h> で ENODATA の 同 義 語 と し て 定 義 さ れ て い る 。 )
ENOSPC 拡 張 属 性 を 記 憶 す る の に 十 分 な ス ペ ー ス が 残 っ て い な い 。 |
ENOTSUP 拡 張 属 性 が そ の フ ァ イ ル シ ス テ ム で サ ポ ー ト さ れ て い な い 、 も し く は 無 効 に な っ て い る 。 errno に ENOTSUP が セ ッ ト さ れ る 。 上 記 に 加 え て 、 stat(2) に 書 か れ て い る エ ラ ー が 発 生 す る 場 合 も あ る 。
バ ー ジ ョ ン
こ れ ら の シ ス テ ム コ ー ル は カ ー ネ ル 2.4 以 降 の Linux で 利 用 で き る 。 glibc で の サ ポ ー ト は バ ー ジ ョ ン 2.3 以 降 で 行 わ れ て い る 。
準 拠
こ れ ら の シ ス テ ム コ ー ル は Linux 独 自 で あ る 。
関 連 項 目
getfattr(1), setfattr(1), getxattr(2), listxattr(2), open(2), removexattr(2), stat(2), attr(5), symlink(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。