lsetxattr - устанавливает расширенное значение
lsetxattr(2)
устанавливает расширенное значение
Other Alias
setxattr, 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 (файлы, каталоги, символьные ссылки и
т.п.). Они являются расширениями к обычным атрибутам, связанным со всеми
записями inode в системе (например, данные
stat(2)). Полное описание
модели расширенных атрибутов можно найти в
xattr(7).
Вызов setxattr() устанавливает значение value расширенного атрибута с
именем, заданным в name и связанного с заданным path в файловой
системе. В аргументе size задаётся размер (в байтах) value;
допускается нулевой размер.
Вызов lsetxattr() идентичен setxattr(), за исключением случая работы с
символьными ссылками; он устанавливает расширенный атрибут на ссылке, а не
на том файле, на который она указывает.
Вызов fsetxattr() идентичен setxattr(), отличием является то, что
расширенный атрибут устанавливается на открытом файле, на который указывает
fd (возвращаемом open(2)), а не на указанном в path.
Имя расширенного атрибута представляет собой строку, заканчивающуюся
null. Имя name включает префикс пространства имён; их может быть
несколько, разрозненные пространства ассоциируются с разными
inode. Значением value расширенного атрибута является произвольный кусок
текстовых или двоичных данных определённой длины.
По умолчанию (т. е., значение flags равно), если расширенный атрибут
отсутствует, то он создаётся, а если он существует, то заменяется его
значение. Для изменения такой работы, в flags можно указать одно из
следующих значений:
XATTR_CREATE
Выполнять только создание, если атрибут с таким именем существует —
возвращать ошибку.
XATTR_REPLACE
Выполнять только замену, если атрибут с таким именем не существует —
возвращать ошибку.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается ноль. В случае ошибки возвращается -1,
а
errno устанавливается в соответствующее значение.
ОШИБКИ
EDQUOT
Предел по дисковой квоте; не хватает пространства для сохранения
расширенного атрибута.
EEXIST
Указан XATTR_CREATE, но атрибут уже существует.
ENOATTR
Указан XATTR_REPLACE, но атрибут не существует (ENOATTR — синоним
ENODATA в <attr/xattr.h>).
ENOSPC
Не хватает пространства для сохранения расширенного атрибута.
ENOTSUP
Неверный префикс пространства имён name.
ENOTSUP
Расширенные атрибуты не поддерживаются файловой системой или отключены.
Также могут возникать ошибки, описанные в stat(2).
ВЕРСИИ
Данные системные вызовы доступны в Linux начиная с ядра версии 2.4;
поддержка в glibc появилась в версии 2.3.
СООТВЕТСТВИЕ СТАНДАРТАМ
Данные системные вызовы есть только в Linux.