getdents - получает записи из каталога
НАЗВАНИЕgetdents - получает записи из каталога
СИНТАКСИС
#include
#include
#include
#include
_syscall3(int, getdents, uint, fd, struct dirent *, dirp, uint, count);
int getdents(unsigned int fd, struct dirent *dirp, unsigned int count);
ОПИСАНИЕ
getdents считывает несколько структур dirent из каталога,
на который указывает описатель fd, и записывает их в
область памяти, определенной параметром dirp. Параметр
count задает размер области памяти.
Структура dirent описана следующим образом:
struct dirent
{
long d_ino; /* номер inode */
off_t d_off; /* смещение следующей записи dirent */
unsigned short d_reclen; /* длина этой записи dirent */
char d_name [NAME_MAX+1]; /* имя файла (заканчивающегося нулем) */
}
d_ino -- номер inode. d_off -- расстояние от начала
каталога до записи dirent. d_reclen -- размер этой записи
dirent. d_name -- имя файла, заканчивающегося нулем.
Этот вызов заменяет readdir(2).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При удачном завершении вызова возвращается количество
считанных байтов. По окончании записей в каталоге
возвращается 0. При ошибке возвращается -1, а в
переменную errno вносится соответствующее значение.
КОДЫ ОШИБОК
EBADF Некорректный описатель файла fd.
EFAULT Аргумент указывает на адрес памяти, находящийся за
пределами адресного пространства процесса.
EINVAL Размер буфера результата недостаточен.
ENOENT Каталог не найден.
ENOTDIR
В описателе файла отсутствует ссылка на каталог.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID. SVr4 дополнительная документация к ENOLINK,
условия ошибок EIO.