#include <sys/types.h> #include <attr/xattr.h> ssize_t listxattr (const char *path, char *list, size_t size); ssize_t llistxattr (const char *path, char *list, size_t size); ssize_t flistxattr (int filedes, char *list, size_t size);
listxattr получает список list названий расширенных атрибутов, ассоциированных с заданным путем path в файловой системе. Список является набором названий (заканчивающихся NULL) один за одним. Названия расширенных атрибутов, к которым вызывающий процесс не может иметь доступ, могут быть исключены из списка. Возвращается длина списка list названий атрибутов.
llistxattr идентично listxattr, за исключением случая символьной ссылки, где список названий расширенных атрибутов ассоциируется с самой полученной ссылкой, а не с файлом, на который они ссылаются.
flistxattr идентично listxattr, только открываемый файл, на который указывает filedes (возвращаемый от open(2)) рассматривается вместо path.
Расширенный атрибут name является просто строкой, заканчивающейся NULL. Имя включает префикс пространства имен - их может быть несколько, разрозненные пространства ассоциируются с разными записями inode.
Пустой буфер с размером size, равным нулю может быть передан этим вызовам для возврата текущего размера указанного расширенного атрибута, что может быть использовано для определения размера буфера, который существенно больше, так как должен содержать значения, ассоцированные с расширенными атрибутами.
user.name1\0system.name1\0user.name2\0
system.posix_acl_access\0system.posix_acl_default\0
Если размер size буфера значения value слишком мал для хранения результата, то errno устанавливается в ERANGE.
Если расширенные атрибуты не поддерживаются файловой системой или отключены, то errno устанавливается в ENOTSUP.
Ошибки, документированные для системного вызова stat(2) также применимы и тут.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |