[PATCH] Fix readdir_r with long file names
Paul Eggert
eggert@cs.ucla.edu
Tue Mar 1 21:21:00 GMT 2016
On 03/01/2016 12:27 PM, Florian Weimer wrote:
> We
> should implement compiler support for this wart: inhibit optimizations
> (I think there are already special cases for length-0 and length-1
> arrays at the end, so it's not totally without precedent), and warn
> about sizeof (struct dirent) and using it as a (non-pointer) declarator.
Why not use a flexible array member for this? Sure, that assumes C99,
but flexible array members are pretty much universally supported now
(and we can fall back on the current layout for pre-C99 compilers). This
would work better with modern compilers that treat small arrays with
more respect than traditional C compilers did. And as I understand
things, it would conform to POSIX (and if I'm wrong, POSIX should get
fixed....).
For what it's worth, portable code cannot copy struct dirent values
anyway, as this loses file names in operating systems like Solaris where
d_name has size 1.
More information about the Libc-alpha
mailing list