LISTXATTR(2)

NOM
listxattr, llistxattr, flistxattr - Lister les noms des attributs étendus

SYNOPSIS
#include <sys/types.h>
#include <attr/xattr.h>

ssize_t listxattr (const char *chemin, char *liste, size_t taille);
ssize_t llistxattr (const char *chemin, char *liste, size_t taille);
ssize_t flistxattr (int descripteur, char *liste, size_t taille);

DESCRIPTION
Les attributs étendus sont des paires nom: valeur associées aux inœuds (fichiers, répertoires, liens symboliques, etc). Ce sont des extensions des attributs normaux qui sont associés avec tous les inœuds du système (les informations renvoyées par stat(2)). Une description complète des concepts d'attributs étendus est disponible dans attr(5).

listxattr() récupère la liste des attributs étendus associé avec le chemin indiqué du système de fichier. La liste est l'ensemble des noms (terminés par NULL), l'un après l'autre. Les noms des attributs étendus auxquels le processus appelant n'a pas accès peuvent être omis dans la liste. La longueur de la liste de noms d'attributs est renvoyée.

llistxattr() est identique à listxattr(), sauf dans le cas d'un lien symbolique, où il renvoie la liste des noms des attributs associés au lien lui-même et non au fichier auquel il se réfère.

flistxattr() est identique à listxattr(), sauf que le fichier ouvert associé au descripteur (fourni par open(2)) est interrogé à la place du chemin.

Le nom d'un attribut étendu est une simple chaîne terminée par un octet nul. Le nom inclut un préfixe d'espace de noms - il peut y avoir plusieurs espaces de noms disjoints associés avec un inœud donné.

Un tampon vide, de taille nulle, peut être transmis à ses appels, pour qu'ils renvoient la taille actuelle de la liste des noms d'attributs étendus, pour estimer la taille de tampon nécessaire pour contenir la liste des noms.

  Exemple
La liste est noms est renvoyée sous forme de table de chaînes de caractères terminées par un octet nul, sans ordre particuler, les noms des attributs étant séparés par un caractère nul, ainsi :
    user.name1\0system.name1\0user.name2\0

Les systèmes comme ext2, ext3, et XFS qui implémentent les ACLs POSIX en utilisant les attributs étendus peuvent renvoyer une liste comme celle-ci :
    system.posix_acl_access\0system.posix_acl_default\0

VALEUR RENVOYÉE
S'ils réussissent, ces appels renvoient un nombre positif correspondant à la taille de la liste de noms d'attributs. En cas d'échec, ils renvoient -1 et remplissent errno avec un code d'erreur.

Si la taille du tampon pour la liste est trop petite pour contenir le résultat, errno sera remplie avec ERANGE.

Si les attributs étendus ne sont pas supportés par le système de fichiers ou le noyau, errno contient ENOTSUP.

Les erreurs documentées pour l'appel système stat(2) sont également applicables ici.

VERSIONS
Ces appels système sont disponibles sous Linux depuis le noyau 2.4 ; la glibc les prend en charge depuis la version 2.3.

CONFORMITÉ
Ces appels sont spécifiques à Linux. getfattr(1), setfattr(1), getxattr(2), open(2), removexattr(2), setxattr(2), stat(2), attr(5), symlink(7)

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 25 juillet 2003 et révisée le 2 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 listxattr ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.