2 * readdir.c: opendir/readdir/closedir
9 #define __KLIBC_DIRENT_INTERNALS
12 DIR *opendir(const char *name)
14 DIR *dp = malloc(sizeof(DIR));
19 dp->__fd = open(name, O_DIRECTORY|O_RDONLY);
31 struct dirent *readdir(DIR *dir)
36 if ( !dir->bytes_left ) {
37 rv = getdents(dir->__fd, dir->buffer, sizeof(dir->buffer));
41 dir->next = dir->buffer;
45 dir->next = (struct dirent *)((char *)dir->next + dent->d_reclen);
46 dir->bytes_left -= dent->d_reclen;
51 int closedir(DIR *dir)
54 rv = close(dir->__fd);