- int len = __getdents(dir->fd, (void *)dir->buf, sizeof dir->buf);
- if (len < 0) {
- dir->lock = 0;
- return NULL;
- } else 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;
+ }