summaryrefslogtreecommitdiff
path: root/userland/libc/dirent/readdir.c
blob: 88aff4869f5d6089f816e522a1ceb342c5fa7e19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <dirent.h>

struct dirent *readdir(DIR *dir) {
  size_t offset = dir->dir_num * sizeof(struct dirent);
  int rc;
  if (-1 == (rc = pread(dir->fd, &dir->internal_direntry, sizeof(struct dirent),
                        offset)))
    return NULL;
  if (rc < sizeof(struct dirent))
    return NULL;

  dir->dir_num++;
  return &(dir->internal_direntry);
}