GETDENTS(2)

NOM
getdents - Obtenir les points d'entree d'un repertoire.

SYNOPSIS
#include <unistd.h>
#include <linux/dirent.h>
#include <linux/unistd.h>

_syscall3(int, getdents, uint, fd, struct dirent *, dirp, uint, count);

int getdents(unsigned int fd, struct dirent *dirp, unsigned int count);

DESCRIPTION
getdents lit plusieurs structures dirent depuis un repertoire pointe par le descripteur de fichier fd et les place dans la zone de memoire pointee par dirp. Le parametre count est la taille de la zone memoire.

La structure dirent est declaree ainsi :

    struct dirent
    {
        long d_ino;                 /* numero d'i-noeud            */
        off_t d_off;                /* distance au prochain dirent */
        unsigned short d_reclen;    /* longueur de ce dirent       */
        char d_name [NAME_MAX+1];   /* nom de fichier (fini par 0) */
    }

d_off est la distance entre le debut du repertoire et le debut de la structure dirent suivante. d_reclen est la taille complete de dirent.

Cette fonction remplace readdir(2).

VALEUR RENVOYEE
getdents renvoie le nombre d'octets lus s'il reussit (0 en fin de repertoire), ou -1 en cas d'echec, auquel cas errno contient le code d'erreur.

ERREURS

EBADF
    fd n'est pas un descripteur de fichier valide.

EFAULT
    L'argument pointe en dehors de l'espace d'adressage disponible.

EINVAL
    Le buffer de resultat est trop petit.

ENOENT
    Repertoire inexistant.

ENOTDIR
    Le descripteur de fichier ne pointe pas sur un repertoire.

CONFORMITE
SVr4, SVID. SVr4 documente les erreurs supplementaires ENOLINK, et EIO.

VOIR AUSSI
readdir(2), readdir(3)