1 /* Copyright (C) 1993-2015 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
24 #include <sys/types.h>
27 #include "dirstream.h"
30 /* Read a directory entry from DIRP. */
32 __readdir_r (DIR *dirp
, struct dirent
*entry
, struct dirent
**result
)
34 if (sizeof (struct dirent64
) == sizeof (struct dirent
))
35 /* We should in fact just be an alias to readdir64_r on this machine. */
36 return __readdir64_r (dirp
,
37 (struct dirent64
*) entry
,
38 (struct dirent64
**) result
);
40 struct dirent64
*result64
;
44 char b
[offsetof (struct dirent64
, d_name
) + UCHAR_MAX
+ 1];
48 err
= __readdir64_r (dirp
, &u
.d
, &result64
);
51 entry
->d_fileno
= result64
->d_fileno
;
52 entry
->d_reclen
= result64
->d_reclen
;
53 entry
->d_type
= result64
->d_type
;
54 entry
->d_namlen
= result64
->d_namlen
;
55 memcpy (entry
->d_name
, result64
->d_name
, result64
->d_namlen
+ 1);
64 weak_alias (__readdir_r
, readdir_r
)