refactor: separate syscall interfaces from kernel space, into posix compliant structure.
[lunaix-os.git] / lunaix-os / kernel / demos / dir_read.c
1 #include <usr/errno.h>
2 #include <usr/fcntl.h>
3 #include <usr/sys/dirent.h>
4 #include <usr/unistd.h>
5
6 void
7 _readdir_main()
8 {
9     int fd = open("/dev/./../dev/.", 0);
10     if (fd == -1) {
11         printf("fail to open (%d)\n", errno);
12         return;
13     }
14
15     char path[129];
16     int len = realpathat(fd, path, 128);
17     if (len < 0) {
18         printf("fail to read (%d)\n", errno);
19     } else {
20         path[len] = 0;
21         printf("%s\n", path);
22     }
23
24     struct lx_dirent ent = { .d_offset = 0 };
25
26     while (sys_readdir(fd, &ent) == 1) {
27         printf("%s\n", ent.d_name);
28     }
29
30     close(fd);
31
32     return;
33 }