setea 子例程

用途

设置扩展属性值。

语法

#include <sys/ea.h>

int setea(const char *path, const char *name,
        void *value, size_t size, int flags);
int fsetea(int filedes, const char *name,
        void *value, size_t size, int flags);
int lsetea(const char *path, const char *name,
        void *value, size_t size, int flags);

描述

扩展属性是与文件系统对象 (例如文件,目录和符号链接) 关联的 "名称: 值" 对。 它们是与文件系统中所有对象 (即 stat (2) 数据) 相关联的正常属性的扩展。

请勿使用 8-character prefix "(0xF8) SYSTEM (0xF8)"定义扩展属性名称。 前缀 "(0xF8) SYSTEM (0xF8)" 仅保留供系统使用。

注: 0xF8 表示不可打印的字符。

setea 子例程设置由 name 标识并与文件系统中的给定 path 相关联的扩展属性的值。 必须指定值的大小。 fsetea 子例程与 setea相同,只是它采用文件描述符而不是路径。 lsetea 子例程与 setea相同,除了在符号链接的情况下,链接本身是被查询的,而不是它所引用的文件。

参数

描述
路径 文件的路径名。
名称 扩展属性的名称。 扩展属性名称是以 NULL 结束的字符串。
value 指向属性值的指针。 扩展属性的值是指定长度的不透明字节流。
大小 值的长度。
文件管理器 文件的文件描述符。
标志 此时未定义任何值。

返回值

如果 setea 子例程成功,那么将返回 0。 一旦失败,将返回-1并适当设置errno

错误代码

描述
EACCES 调用者缺少对基本文件的写许可权,或者缺少对指定属性 write的相应 ACL 特权。
EDQUOT 由于配额实施,剩余空间不足以存储扩展属性。
Efault pathnamevalue传递了错误地址。
EFORMAT 文件系统能够支持 EAs ,但 EAs 处于禁用状态。
EINVAL 不应指定任何标志。
EINVAL 不应使用类似路径的名称 (例如 zml/file)。..)。
ENAMETOOLONG pathname 值太长。
ENOSPC 剩余空间不足以存储扩展属性。
ENOTSUP 文件系统不支持扩展属性。

此处还适用针对 stat (2) 系统调用记录的错误。