BEZEICHNUNG¶
scandir, alphasort, versionsort - durchsucht ein Verzeichnis nach passenden
  Einträgen
ÜBERSICHT¶
#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);
 
Mit Glibc erforderliche Makros (siehe 
feature_test_macros(7)):
 
scandir(), 
alphasort(): _BSD_SOURCE || _SVID_SOURCE
 
versionsort(): _GNU_SOURCE
BESCHREIBUNG¶
Die Funktion 
scandir() durchsucht das Verzeichnis 
dirp und ruft
  für jeden Verzeichniseintrag 
filter() auf. Einträge, für
  die 
filter() einen Wert ungleich 0 zurückgibt, werden in
  Zeichenketten gespeichert, derenSpeicher mit 
malloc(3) reserviert wird.
  Danach werden die Zeichenkettenmit 
qsort(3) unter Verwendung der
  Vergleichsfunktion 
compar() sortiert und im Feld 
namelist
  gesammelt, dessen Speicher ebenfalls mit 
malloc(3) reserviert wird.
  Falls 
filter gleich NULL ist, werden alle Einträge
  ausgewählt.
Die Funktionen 
alphasort() und 
versionsort() können als die
  Vergleichsfunktion 
compar() benutzt werden. Die erste sortiert die
  Verzeichniseinträge mittels 
strcoll(3), die letztere
  
strverscmp(3) auf den Zeichenketten 
(*a)->d_name and
  
(*b)->d_name.
RÜCKGABEWERT¶
Die Funktion 
scandir() liefert die Anzahl ausgewählter
  Verzeichniseinträge oder im Fehlerfall -1 zurück.
Die Funktionen 
alphasort() und 
versionsort() liefern eine Zahl
  kleiner als Null, Null, oder größer als Null zurück, wenn das
  erste Argument entsprechend als kleiner, gleich oder größer als das
  zweite Argument angesehen wird.
FEHLER¶
  - ENOENT
 
  - Der Pfad in dirp existiert nicht.
 
  - ENOMEM
 
  - Zu wenig Speicher um den Vorgang zu beenden.
 
  - ENOTDIR
 
  - Der Pfad in dirp ist kein Verzeichnis.
 
VERSIONEN¶
versionsort() wurde der Glibc in Version 2.1 hinzugefügt.
alphasort() und 
scandir() werden in POSIX.1-2008 beschrieben und
  sind weithin verfügbar. 
versionsort() ist eine GNU-Erweiterung.
Die Funktion 
scandir() und 
alphasort() stammen aus 4.3BSD und
  waren unter Linux seit Libc4 verfügbar. Libc4 und Libc5 verwenden den
  genaueren Prototyp
 
    int alphasort(const struct dirent ** a,
                  const struct dirent **b);
 
aber Glibc 2.0 kehrt zum ungenauen BSD-Prototyp zurück.
Die Funktion 
versionsort() ist eine GNU-Erweiterung und seit Glibc 2.1
  verfügbar.
Seit Glibc 2.1 verwendet 
alphasort() 
strcoll(3); früher
  nutzte sie 
strcmp(3).
BEISPIEL¶
#define _SVID_SOURCE
/* Ausgabe der Dateien im aktuellen Verzeichnis in
   umgekehrter Reihenfolge */
#include <dirent.h>
int
main(void)
{
    struct dirent **Namensliste;
    int n;
    n = scandir(".", &Namensliste, NULL, alphasort);
    if (n < 0)
        perror("scandir");
    else {
        while (n--) {
            printf("%s\n", Namensliste[n]->d_name);
            free(Namensliste[n]);
        }
        free(Namensliste);
    }
}
SIEHE AUCH¶
closedir(3), 
fnmatch(3), 
opendir(3), 
readdir(3),
  
rewinddir(3), 
scandirat(3), 
seekdir(3), 
strcmp(3),
  
strcoll(3), 
strverscmp(3), 
telldir(3)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
  
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
  gemeldet werden können, finden sich unter
  
http://www.kernel.org/doc/man-pages/.
 
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Markus Kaufmann
  <markus.kaufmann@gmx.de> und Martin Eberhard Schauer
  <Martin.E.Schauer@gmx.de> erstellt.
 
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public
  License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird
  KEINE HAFTUNG übernommen.
 
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
  Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.