Provided by: manpages-fr_1.67.0-1_all bug

NOM

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

SYNOPSIS

       #include <dirent.h>

       int scandir (const char * dir, struct dirent ***namelist,
              int (*select)(const struct diren t *),
              int (*compar)(const struct dirent **, const struct dirent **));

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

DESCRIPTION

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

       Les fonctions alphasort() et versionsort() peuvent être utilisées comme
       fonction de comparaison dans la fonction scandir().  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  repertoire
       selectionné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.

CONFORMITÉ

       Aucune de ces fonctions n’est décrite par POSIX.  LSB a rendu  obsolète
       l’appel bibliothèque alphasort() et ne comporte jamais scandir().

       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) ; alors qu’auparavant elle employait strcmp(3).

EXEMPLE

       /* Afficher le contenu du répertoire en ordre inverse */
       #include <dirent.h>
       main(){
           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

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

TRADUCTION

       Christophe Blaess, 1996-2003.