scandir - POSIX-Standard?



Hallo,

ich versuche eine Funktion, die scandir benutzt unter Linux (SuSE) zu
kompilieren.

man sagt dazu:

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

genauso ist meine compar-Funktion auch deklariert. Trotzdem liefert der
compiler eine Warnung:

scandirlib.c:105: warning: passing arg 4 of `scandir' from incompatible
pointer
type

ich prüfe dann in dirent.h und was sehe ich:

# ifndef __USE_FILE_OFFSET64
extern int scandir (__const char *__restrict __dir,
struct dirent ***__restrict __namelist,
int (*__selector) (__const struct dirent *),
int (*__cmp) (__const void *, __const void *)) __THROW;
# else
# ifdef __REDIRECT
extern int __REDIRECT (scandir,
(__const char *__restrict __dir,
struct dirent ***__restrict __namelist,
int (*__selector) (__const struct dirent *),
int (*__cmp) (__const void *, __const void *))
__THROW,
scandir64);

die Deklaration stimmt anscheinend mit der aus manual nicht überein und der
Unterschied ist nicht ganz unrelevant. Unter AIX scheint es aber zu stimmen.
Jetzt versuche ich rauszufinden, ob ich auf dem Holzweg bin, oder scandir
nicht zum POSIX-Standard gehört. Und wenn nicht - was kann ich stattdessen
benutzen.

Ich bin ziemlicher newbie in der UNIX-Welt, deswegen weiß nicht, wo man eine
Antwort auf meine Frage am besten findet. Durch google habe ich zumindest
keine definitive Antwort gefunden, obwohl scandir ziemlich oft auftaucht.
Kann mir jemand helfen?

Danke im Voraus
Boris




.



Relevant Pages


Loading