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