Pegasus InfoCorp: Web site design and web software development company

GETDENTS (2)

get directory entries

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 reads several dirent structures from the directory pointed at by fd into the memory area pointed to by dirp . The parameter count is the size of the memory area.

    The dirent structure is declared as follows:

      struct dirent
      {
          long d_ino;                 /* inode number */
          off_t d_off;                /* offset to next dirent */
          unsigned short d_reclen;    /* length of this dirent */
          char d_name [NAME_MAX+1];   /* file name (null-terminated) */
      }
      

    d_ino is an inode number. d_off is the distance from the start of the directory to the start of the next dirent . d_reclen is the size of this entire dirent. d_name is a null-terminated file name.

    This call supersedes readdir (2).

RETURN VALUE

    On success, the number of bytes read is returned. On end of directory, 0 is returned. On error, -1 is returned, and errno is set appropriately.

ERRORS

    EBADF

      Invalid file descriptor fd .

    EFAULT

      Argument points outside the calling process's address space.

    EINVAL

      Result buffer is too small.

    ENOENT

      No such directory.

    ENOTDIR

      File descriptor does not refer to a directory.

CONFORMING TO

    SVr4, SVID. SVr4 documents additional ENOLINK, EIO error conditions.

SEE ALSO