Loading

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  (voir
   feature_test_macros(7)) :

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

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

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