HomeFreeBSD

directory(3): Deprecate readdir_r(). Clarify dirent buffers.

Description

directory(3): Deprecate readdir_r(). Clarify dirent buffers.

In existing implementations including FreeBSD, there is no reason to use
readdir_r() in the common case where potentially multiple threads each list
their own directory. Code using readdir() is simpler.

What's more, lthough readdir_r() can safely be used on FreeBSD because
NAME_MAX is forced to 255, it cannot be used safely on systems where
{NAME_MAX} is not fixed. As a concrete example, FAT/NTFS filenames can be up
to 255 UTF-16 code units long, which can be up to 765 UTF-8 bytes.

Deprecating readdir_r() in POSIX has been proposed in
http://www.austingroupbugs.net/view.php?id=696
and glibc wants to deprecate it as well.

Reviewed by: ed, wblock
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D7678

Details

Provenance
jillesAuthored on
Reviewer
ed
Differential Revision
D7678: directory(3): Deprecate readdir_r(). Clarify dirent buffers.
Parents
rS305153: MFC: r304638, r304640
Branches
Unknown
Tags
Unknown