Merge branch 'device-sys'
[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
6 void
7 _readdir_main()
8 {
9     int fd = open("/dev/./../dev/.", 0);
10     if (fd == -1) {
11         printf("fail to open (%d)\n", geterrno());
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", geterrno());
19     } else {
20         path[len] = 0;
21         printf("%s\n", path);
22     }
23
24     struct dirent ent = { .d_offset = 0 };
25
26     while (readdir(fd, &ent) == 1) {
27         printf("%s\n", ent.d_name);
28     }
29
30     close(fd);
31
32     return;
33 }