#include #include #include #include #include "__dirent.h" #include "libc.h" int readdir_r(DIR *restrict dir, struct dirent *restrict buf, struct dirent **restrict result) { struct dirent *de; int errno_save = errno; int ret; LOCK(dir->lock); errno = 0; de = readdir(dir); if ((ret = errno)) { UNLOCK(dir->lock); return ret; } errno = errno_save; if (de) memcpy(buf, de, de->d_reclen); else buf = NULL; UNLOCK(dir->lock); *result = buf; return 0; } LFS64_2(readdir_r, readdir64_r);