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 | 为 path, name或 value传递了错误地址。 |
| EFORMAT | 文件系统能够支持 EAs ,但 EAs 处于禁用状态。 |
| EINVAL | 不应指定任何标志。 |
| EINVAL | 不应使用类似路径的名称 (例如 zml/file, )。 和 ..)。 |
| ENAMETOOLONG | path 或 name 值太长。 |
| ENOSPC | 剩余空间不足以存储扩展属性。 |
| ENOTSUP | 文件系统不支持扩展属性。 |
此处还适用针对 stat (2) 系统调用记录的错误。