Question to rewinddir() implementation in newlib/libc/posix
Tue Mar 9 20:38:00 GMT 2010
On 03/03/2010 09:13 AM, Sebastian Huber wrote:
> the function rewinddir() uses
> _seekdir((dirp), (off_t)0);
> The function _seekdir() is implemented in telldir.c. Here the offset is
> actually a hash table index. Since 0 is not a special case I doubt that the
> rewinddir() implementation is correct.
You are correct. The original code that this was based on had an
additional field in the DIR struct called rewinddir. This was set in
opendir.c add the end and that is why there is a comment about setting
the rewind location.
However, this field was not expected to be in platform's dirent.h so it
was never carried over.
I have modified the telldir code to start the index at 1 and to treat 0
as rewind. This should alleviate the problem and not require any
changes to sys/dirent.h.
-- Jeff J.
More information about the Newlib