Merge branch 'master' into vfs-dev
[lunaix-os.git] / lunaix-os / kernel / demos / dir_read.c
1 #include <lunaix/dirent.h>
2 #include <lunaix/fctrl.h>
3 #include <lunaix/lunistd.h>
4 #include <lunaix/proc.h>
5 #include <lunaix/syslog.h>
6
7 LOG_MODULE("RDDIR")
8
9 void
10 _readdir_main()
11 {
12     int fd = open("/dev/./../dev/.", 0);
13     if (fd == -1) {
14         kprintf(KERROR "fail to open (%d)\n", geterrno());
15         return;
16     }
17
18     char path[129];
19     int len = realpathat(fd, path, 128);
20     if (len < 0) {
21         kprintf(KERROR "fail to read (%d)\n", geterrno());
22     } else {
23         path[len] = 0;
24         kprintf("%s\n", path);
25     }
26
27     struct dirent ent = { .d_offset = 0 };
28
29     while (!readdir(fd, &ent)) {
30         kprintf(KINFO "%s\n", ent.d_name);
31     }
32
33     close(fd);
34
35     return;
36 }