#include <sys/types.h> #include <attr/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 filedes, const char *name, const void *value, size_t size, int flags);
setxattr устанавливает значение value расширенного атрибута, идентифицированного по имени name и ассоциированного с указанным путем path в файловой системе. Должна быть указана длина size атрибута value.
lsetxattr идентично setxattr, за исключением случаем символьной ссылки, когда устанавливается расширенный атрибут на ссылке, а не на том файле, на который она указывает.
fsetxattr идентично setxattr, только расширенный атрибут устанавливается на открываемом файле, на который указывает filedes (возвращаемый от open(2)) вместо path.
Расширенный атрибут name является просто строкой, заканчивающейся на NULL. Имя включает префикс пространства имен - их может быть несколько, разрозненные пространства ассоциируются с разными записями inode. Значением value расширенного атрибута является произвольный кусок текстовых или двоичных данных определенной длины.
Параметр flags может использоваться для уточнения семантики операций. XATTR_CREATE определяет только создание, причем выдает ошибку, если указанный атрибут уже существует. XATTR_REPLACE определяет только операцию замены, выдающую ошибку, если указанный атрибут не существует. По умолчанию (без флагов) расширенный атрибут будет создан при необходимости, или просто заменит значение существующего атрибута.
Если указано XATTR_CREATE, и атрибут уже существует, то errno устанавливается в EEXIST. Если указано XATTR_REPLACE, а атрибут не существует, то errno устанавливается в ENOATTR.
Если не хватает пространства для хранения расширенного атрибута, то errno устанавливается в ENOSPC, либо в EDQUOT, если причиной этого было ограничение по квоте.
Если расширенный атрибут не поддерживается файловой системой или отключен, то errno устанавливается в ENOTSUP.
Ошибки, документированные для системного вызова stat(2) также применимы и тут.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |