Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       readdir, readdir_r - Consulter un répertoire

SYNOPSIS

       #include <dirent.h>

       struct dirent *readdir(DIR *dirp);

       int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);

   Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :

       readdir_r() :
           _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE || _POSIX_SOURCE

DESCRIPTION

       La fonction readdir() renvoie un pointeur sur une structure dirent représentant l'entrée suivante du flux
       répertoire pointé par dirp. Elle renvoie NULL a la fin du répertoire, ou en cas d'erreur.

       Avec Linux, la structure dirent est définie comme suit :

           struct dirent {
               ino_t          d_ino;       /* numéro d'inœud */
               off_t          d_off;       /* pas une position ; consultez NOTES */
               unsigned short d_reclen;    /* longueur de cet enregistrement */
               unsigned char  d_type;      /* type du fichier ; pas pris en
                                              charge par tous les types de
                                              système de fichiers */
               char           d_name[256]; /* nom du fichier */
           };

       Les seuls champs exigés par POSIX.1 pour la structure dirent sont : d_name[], de taille non définie, avec
       au  plus NAME_MAX caractères avant le caractère nul final (« \0 ») ; et (en tant qu'extension XSI) d_ino.
       Les autres champs ne sont pas standard, et ne sont pas présents sur tous  les  systèmes ;  consultez  les
       NOTES ci-dessous pour plus de détails.

       Les  données  renvoyées  par readdir() sont écrasées lors de l'appel suivant à readdir() sur le même flux
       répertoire.

       La fonction readdir_r() est la  version  réentrante  de  readdir().  Elle  lit  la  prochaine  entrée  de
       répertoire  à  partir  du  flux de répertoire dirp, et la renvoie dans le tampon de l'appelant pointé par
       entry. (Consultez la section NOTES pour des informations sur l'allocation de ce tampon.) Un pointeur vers
       l'élément  renvoyé  est  placé  dans  *result ;  si la fin du flux de répertoire est rencontrée, NULL est
       renvoyé dans *result.

VALEUR RENVOYÉE

       En cas de succès, readdir() renvoie un pointeur sur une structure dirent (cette structure peut avoir  été
       allouée  statiquement ;  n'essayez  pas de la désallouer avec free(3)). Lorsque la fin du flux répertoire
       est atteinte, NULL est renvoyé et errno n'est pas modifiée. En cas d'erreur, NULL est renvoyée  et  errno
       contient le code d'erreur.

       La  fonction readdir_r() renvoie 0 si elle réussit. Si elle échoue, elle renvoie un code d'erreur positif
       (documenté dans ERREURS). Si la fin du flux répertoire est atteinte, readdir_r()  renvoie  0  et  renvoie
       NULL dans *result.

ERREURS

       EBADF  Le descripteur de flux du répertoire, dirp, n'est pas valable.

ATTRIBUTS

   Multithreading (voir pthreads(7))
       La fonction readdir() n'est pas sûre dans un contexte multithread.

       La fonction readdir_r() est sûre dans un contexte multithread.

CONFORMITÉ

       SVr4, BSD 4.3, POSIX.1-2001.

NOTES

       Seuls les champs d_name et d_ino sont spécifiés dans POSIX.1-2001. les autres champs sont disponibles sur
       beaucoup de systèmes, mais pas sur tous. Sur la glibc, les programmes peuvent vérifier la  disponibilités
       des   champs   non   définis   dans   POSIX.1   en   testant   sir   les   macros  _DIRENT_HAVE_D_NAMLEN,
       _DIRENT_HAVE_D_RECLEN, _DIRENT_HAVE_D_OFF ou _DIRENT_HAVE_D_TYPE sont définie.

       La valeur renvoyée dans d_off est la même qui serait  renvoyée  en  appelant  telldir(3)  à  la  position
       actuelle  dans  le  flux  répertoire.  Soyez  conscient  que,  malgré  ses type et nom, le champ d_off ne
       représente que rarement une sorte de position de répertoire sur les systèmes de  fichiers  modernes.  Les
       applications  devraient  traiter  ce  champ  comme  une  valeur opaque, sans faire de supposition sur son
       contenu. Consultez aussi telldir(3).

       En dehors de Linux, le champ d_type est disponible presque uniquement sur  les  systèmes  BSD.  Ce  champ
       évite  d'avoir à appeler lstat(2) si les actions qui suivent dépendent du type de fichier. Si la macro de
       test de fonctionnalités _BSD_SOURCE est définie, alors la glibc définie les  macros  suivantes  pour  les
       valeurs renvoyées dans d_type :

       DT_BLK      Il s'agit d'un périphérique bloc.

       DT_CHR      Il s'agit d'un périphérique caractère.

       DT_DIR      Il s'agit d'un répertoire

       DT_FIFO     Il s'agit d'un tube nommé (FIFO).

       DT_LNK      Il s'agit d'un lien symbolique.

       DT_REG      Il s'agit d'un fichier ordinaire.

       DT_SOCK     Il s'agit d'une socket de domaine UNIX.

       DT_UNKNOWN  Le type du fichier est inconnu.

       Si le type de fichier ne peut pas être déterminé, la valeur DT_UNKNOWN est renvoyée dans d_type.

       Actuellement,  seuls  certains  systèmes  de fichiers (parmi lesquels Btrfs, ext2, ext3 et ext4) prennent
       complètement en charge le renvoi du type de fichier dans d_type. Toutes les  applications  doivent  gérer
       correctement une valeur de retour valant DT_UNKNOWN.

       Puisque  POSIX.1  ne  spécifie pas la taille du champ d_name, et que d'autres champs non standard peuvent
       précéder ce champ dans la structure dirent, les applications portables  utilisant  readdir_r()  devraient
       allouer le tampon dont l'adresse est passée dans entry de la façon suivante :

           name_max = pathconf(dirpath, _PC_NAME_MAX);
           if (name_max == -1)         /* Limite non définie ou erreur */
               name_max = 255;         /* Au hasard */
           len = offsetof(struct dirent, d_name) + name_max + 1;
           entryp = malloc(len);

       (POSIX.1 demande que d_name soit le dernier champ d'une structure dirent.)

VOIR AUSSI

       getdents(2),  read(2),  closedir(3), dirfd(3), ftw(3), offsetof(3), opendir(3), rewinddir(3), scandir(3),
       seekdir(3), telldir(3)

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <http://manpagesfr.free.fr/> (2003-2006). Nicolas François  et  l'équipe  francophone  de  traduction  de
       Debian (2006-2009).

       Veuillez  signaler  toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

                                                  21 juin 2013                                        READDIR(3)