Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       scandir, alphasort, versionsort - Sélectionner des éléments d'un répertoire

SYNOPSIS

       #include <dirent.h>

       int scandir(const char *dirp, struct dirent ***namelist,
              int (*filter)(const struct dirent *),
              int (*compar)(const struct dirent **, const struct dirent **));

       int alphasort(const void *a, const void *b);

       int versionsort(const void *a, const void *b);

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

       scandir(), alphasort() : _BSD_SOURCE || _SVID_SOURCE
       versionsort() : _GNU_SOURCE

DESCRIPTION

       La fonction scandir() examine le répertoire dirp, en appelant filter() pour chaque élément
       rencontré. Les entrées pour lesquelles filter() renvoie une valeur non nulle sont stockées
       dans une table allouée avec malloc(3), triée avec qsort(3) en  utilisant  la  fonction  de
       comparaison  compar(),  puis regroupées dans une table namelist allouée avec malloc(3). Si
       filter est NULL, toutes les entrées sont sélectionnées.

       Les fonctions alphasort() et  versionsort()  peuvent  être  utilisées  comme  fonction  de
       comparaison  compar.  La  première trie les entrées du répertoire en ordre alphabétique en
       utilisant strcoll(3), la seconde en utilisant strverscmp(3) sur les  chaînes  (*a)->d_name
       et (*b)->d_name.

VALEUR RENVOYÉE

       La fonction scandir() renvoie le nombre d'entrées de répertoire sélectionnées ou -1 en cas
       d'erreur.

       Les fonctions alphasort() et versionsort() renvoient un entier négatif, nul, ou positif si
       le premier argument est respectivement inférieur, égal ou supérieur au second.

ERREURS

       ENOMEM Pas assez de mémoire pour terminer l'opération.

VERSIONS

       versionsort() a été ajoutée à la glibc dans la version 2.1.

CONFORMITÉ

       alphasort()  et scandir() sont spécifiées dans POSIX.1-2008 et sont disponibles largement.
       versionsort() est une extension GNU.

       Les fonctions scandir() et alphasort() proviennent de BSD 4.3  et  sont  disponibles  sous
       Linux depuis libc4. Les bibliothèques libc4 et libc5 utilisent le prototype plus précis

           int alphasort(const struct dirent ** a,
                         const struct dirent **b);

       mais la glibc 2.0 est revenue au prototype BSD imprécis.

       La fonction versionsort() est une extension GNU, disponible depuis la glibc 2.1.

       Depuis  la  glibc  2.1,  la  fonction  alphasort()  invoque  strcoll(3). Dans les versions
       précédentes, elle appelait strcmp(3).

EXEMPLE

       #define _SVID_SOURCE
       /* Afficher le contenu du répertoire en ordre inverse */
       #include <dirent.h>

       int
       main(void)
       {
           struct dirent **namelist;
           int n;

           n = scandir(".", &namelist, 0, alphasort);
           if (n < 0)
               perror("scandir");
           else {
               while (n--) {
                   printf("%s\n", namelist[n]->d_name);
                   free (namelist [n]);
               }
               free (namelist);
           }
       }

VOIR AUSSI

       closedir(3), fnmatch(3),  opendir(3),  readdir(3),  rewinddir(3),  seekdir(3),  strcmp(3),
       strcoll(3), strverscmp(3), telldir(3)

COLOPHON

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

TRADUCTION

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

       Christophe   Blaess   <URL:http://www.blaess.fr/christophe/>   (1996-2003),  Alain  Portal
       <URL: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> ».