
This function is deprecated; use readdir(3) instead.
The readdir_r() function was invented as a reentrant version of readdir(3). It reads the next directory entry from the directory stream
#12572: `readdir_r` is deprecated -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Core | Version: 8.1 Libraries | Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: Building GHC Unknown/Multiple | failed Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- When building GHC git HEAD on Debian Testing I get: {{{ libraries/unix/cbits/HsUnix.c: In function ‘__hscore_readdir’: libraries/unix/cbits/HsUnix.c:64:3: error: error: ‘readdir_r’ is deprecated [-Werror=deprecated-declarations] res = readdir_r(dirPtr, p, pDirEnt); ^~~ In file included from libraries/unix/include/HsUnix.h:71:0: error: 0, from libraries/unix/cbits/HsUnix.c:9: /usr/include/dirent.h:183:12: error: note: declared here extern int readdir_r (DIR *__restrict __dirp, ^~~~~~~~~ }}} According to the man page: dirp, and returns it in the caller-allocated buffer pointed to by entry.
It is expected that a future version of POSIX.1 will make readdir_r()
obsolete, and require that readdir() be thread-safe when concurrently employed on different directory streams. In order to support all of the various *nix systems, we probably need to detect if `readdir_r` is deprecated and only use `readdir` where `readdir_r` is in fact deprecated. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12572 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler