mirror of
https://sourceware.org/git/glibc.git
synced 2025-05-30 04:04:54 +03:00
hurd: Fix dirfd symbol exposition from ftw
dirfd is XOPEN2K8 only, it should not be exposed along ftw which is earlier. * include/dirent.h (__dirfd): New declaration. * dirent/dirfd.c (dirfd): Rename to __dirfd, and redefine as weak alias. * sysdeps/posix/dirfd/dirfd.c (dirfd): Likewise. * sysdeps/mach/hurd/dirfd.c (dirfd): Likewise. * io/ftw.c (open_dir_stream, ftw_dir): Use __dirfd instead of dirfd.
This commit is contained in:
parent
825adeeed1
commit
2c7bbfaf4e
@ -1,3 +1,12 @@
|
|||||||
|
2017-09-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||||
|
|
||||||
|
* include/dirent.h (__dirfd): New declaration.
|
||||||
|
* dirent/dirfd.c (dirfd): Rename to __dirfd, and redefine as weak
|
||||||
|
alias.
|
||||||
|
* sysdeps/posix/dirfd/dirfd.c (dirfd): Likewise.
|
||||||
|
* sysdeps/mach/hurd/dirfd.c (dirfd): Likewise.
|
||||||
|
* io/ftw.c (open_dir_stream, ftw_dir): Use __dirfd instead of dirfd.
|
||||||
|
|
||||||
2017-09-26 H.J. Lu <hongjiu.lu@intel.com>
|
2017-09-26 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
[BZ #18822]
|
[BZ #18822]
|
||||||
|
@ -21,10 +21,11 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
dirfd (DIR *dirp)
|
__dirfd (DIR *dirp)
|
||||||
{
|
{
|
||||||
__set_errno (ENOSYS);
|
__set_errno (ENOSYS);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
weak_alias (__dirfd, dirfd)
|
||||||
stub_warning (dirfd)
|
stub_warning (dirfd)
|
||||||
|
@ -46,6 +46,7 @@ extern int __versionsort64 (const struct dirent64 **a,
|
|||||||
extern DIR *__alloc_dir (int fd, bool close_fd, int flags,
|
extern DIR *__alloc_dir (int fd, bool close_fd, int flags,
|
||||||
const struct stat64 *statp) attribute_hidden;
|
const struct stat64 *statp) attribute_hidden;
|
||||||
extern __typeof (rewinddir) __rewinddir;
|
extern __typeof (rewinddir) __rewinddir;
|
||||||
|
extern __typeof (dirfd) __dirfd;
|
||||||
|
|
||||||
extern void __scandir_cancel_handler (void *arg) attribute_hidden;
|
extern void __scandir_cancel_handler (void *arg) attribute_hidden;
|
||||||
extern int __scandir_tail (DIR *dp,
|
extern int __scandir_tail (DIR *dp,
|
||||||
|
6
io/ftw.c
6
io/ftw.c
@ -361,7 +361,7 @@ open_dir_stream (int *dfdp, struct ftw_data *data, struct dir_data *dirp)
|
|||||||
result = -1;
|
result = -1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dirp->streamfd = dirfd (dirp->stream);
|
dirp->streamfd = __dirfd (dirp->stream);
|
||||||
dirp->content = NULL;
|
dirp->content = NULL;
|
||||||
data->dirstreams[data->actdir] = dirp;
|
data->dirstreams[data->actdir] = dirp;
|
||||||
|
|
||||||
@ -518,7 +518,7 @@ fail:
|
|||||||
/* If necessary, change to this directory. */
|
/* If necessary, change to this directory. */
|
||||||
if (data->flags & FTW_CHDIR)
|
if (data->flags & FTW_CHDIR)
|
||||||
{
|
{
|
||||||
if (__fchdir (dirfd (dir.stream)) < 0)
|
if (__fchdir (__dirfd (dir.stream)) < 0)
|
||||||
{
|
{
|
||||||
result = -1;
|
result = -1;
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -602,7 +602,7 @@ fail:
|
|||||||
/* Change back to the parent directory. */
|
/* Change back to the parent directory. */
|
||||||
int done = 0;
|
int done = 0;
|
||||||
if (old_dir->stream != NULL)
|
if (old_dir->stream != NULL)
|
||||||
if (__fchdir (dirfd (old_dir->stream)) == 0)
|
if (__fchdir (__dirfd (old_dir->stream)) == 0)
|
||||||
done = 1;
|
done = 1;
|
||||||
|
|
||||||
if (!done)
|
if (!done)
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
dirfd (DIR *dirp)
|
__dirfd (DIR *dirp)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
@ -41,3 +41,5 @@ dirfd (DIR *dirp)
|
|||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
weak_alias (__dirfd, dirfd)
|
||||||
|
@ -22,7 +22,9 @@
|
|||||||
#undef dirfd
|
#undef dirfd
|
||||||
|
|
||||||
int
|
int
|
||||||
dirfd (DIR *dirp)
|
__dirfd (DIR *dirp)
|
||||||
{
|
{
|
||||||
return dirp->fd;
|
return dirp->fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
weak_alias (__dirfd, dirfd)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user