X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fdirent%2Freaddir.c;h=2cf0632c207ef2547d6dfe8b67ed23783cf151d4;hb=622fe8b5cf15858b6cbb8346fb3d7c388f635849;hp=98ec029e6b983bb9de2d3a86d2cf296dac5dd325;hpb=571744447c23f91feb6439948f3a619aca850dfb;p=oweals%2Fmusl.git diff --git a/src/dirent/readdir.c b/src/dirent/readdir.c index 98ec029e..2cf0632c 100644 --- a/src/dirent/readdir.c +++ b/src/dirent/readdir.c @@ -1,5 +1,7 @@ #include +#include #include "__dirent.h" +#include "syscall.h" #include "libc.h" int __getdents(int, struct dirent *, size_t); @@ -9,8 +11,11 @@ struct dirent *readdir(DIR *dir) struct dirent *de; if (dir->buf_pos >= dir->buf_end) { - int len = __getdents(dir->fd, (void *)dir->buf, sizeof dir->buf); - if (len <= 0) return 0; + int len = __syscall(SYS_getdents, dir->fd, dir->buf, sizeof dir->buf); + if (len <= 0) { + if (len < 0 && len != -ENOENT) errno = -len; + return 0; + } dir->buf_end = len; dir->buf_pos = 0; }