#include #include #include #include #include #include int main(int argc, char **argv) { ssize_t len; off_t d_off, r; struct dirent *de; int dirfd; char buf[8192]; char *bufp; d_off = atol(argv[1]); dirfd = open(".", O_RDONLY); assert(dirfd >= 0); r = lseek(dirfd, d_off, SEEK_SET); assert(r >= 0); len = getdirentries(dirfd, buf, 8192, NULL); assert(len >= 0); printf("len=%ld\n", len); bufp = &buf[0]; while (len > 0) { de = (struct dirent*)(bufp); printf("name=%s d_reclen=%hu d_off=%ld\n", de->d_name, de->d_reclen, de->d_off); len -= de->d_reclen; bufp += de->d_reclen; } return (0); }