Provided by: manpages-fr-dev_2.64.1-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 (*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 pour les macros de test de fonctionnalité de la glibc  (consultez
   feature_test_macros(7)) :

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

DESCRIPTION

       La  fonction  scandir() examine le répertoire dir, 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.

CONFORMITÉ

       Aucune de ces fonctions n’est dans POSIX.1-2001,  mais  alphasort()  et
       scandir() sont en ballottage pour faire partie des révisions futures de
       POSIX.1.

       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)

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

       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> ».