mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 19:53:32 +08:00
io: Remove xstat implementations
With xstat wrapper functions removed (8ed005daf0
), the stat functions
are now properly exported, and version is done using symbols versioning
instead of the extra _STAT_* argument.
Reviewed-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
parent
69fda43b8d
commit
4d97cc8cf3
@ -33,9 +33,8 @@ routines := \
|
||||
utime \
|
||||
mkfifo mkfifoat \
|
||||
stat fstat lstat stat64 fstat64 lstat64 fstatat fstatat64 \
|
||||
xstat fxstat lxstat xstat64 fxstat64 lxstat64 statx \
|
||||
statx \
|
||||
mknod mknodat xmknod xmknodat \
|
||||
fxstatat fxstatat64 \
|
||||
statfs fstatfs statfs64 fstatfs64 \
|
||||
statvfs fstatvfs statvfs64 fstatvfs64 \
|
||||
umask chmod fchmod lchmod fchmodat \
|
||||
|
@ -17,11 +17,10 @@
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#undef __fstat
|
||||
int
|
||||
__fstat (int fd, struct stat *buf)
|
||||
{
|
||||
return __fxstat (_STAT_VER, fd, buf);
|
||||
return __fstatat (fd, "", buf, AT_EMPTY_PATH);
|
||||
}
|
||||
|
||||
weak_alias (__fstat, fstat)
|
||||
|
@ -17,11 +17,10 @@
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#undef __fstat64
|
||||
int
|
||||
__fstat64 (int fd, struct stat64 *buf)
|
||||
{
|
||||
return __fxstat64 (_STAT_VER, fd, buf);
|
||||
return __fstatat64 (fd, "", buf, AT_EMPTY_PATH);
|
||||
}
|
||||
hidden_def (__fstat64)
|
||||
weak_alias (__fstat64, fstat64)
|
||||
|
18
io/fstatat.c
18
io/fstatat.c
@ -16,12 +16,26 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
|
||||
#undef __fstatat
|
||||
int
|
||||
__fstatat (int fd, const char *file, struct stat *buf, int flag)
|
||||
{
|
||||
return __fxstatat (_STAT_VER, fd, file, buf, flag);
|
||||
if (fd < 0 && fd != AT_FDCWD)
|
||||
{
|
||||
__set_errno (EBADF);
|
||||
return -1;
|
||||
}
|
||||
if (buf == NULL || (flag & ~AT_SYMLINK_NOFOLLOW) != 0)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
|
||||
weak_alias (__fstatat, fstatat)
|
||||
|
||||
stub_warning (fstatat)
|
||||
|
@ -16,12 +16,26 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
|
||||
#undef __fstatat64
|
||||
int
|
||||
__fstatat64 (int fd, const char *file, struct stat64 *buf, int flag)
|
||||
{
|
||||
return __fxstatat64 (_STAT_VER, fd, file, buf, flag);
|
||||
if (fd < 0 && fd != AT_FDCWD)
|
||||
{
|
||||
__set_errno (EBADF);
|
||||
return -1;
|
||||
}
|
||||
if (buf == NULL || (flag & ~AT_SYMLINK_NOFOLLOW) != 0)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
hidden_def (__fstatat64)
|
||||
weak_alias (__fstatat64, fstatat64)
|
||||
|
||||
stub_warning (fstatat64)
|
||||
|
48
io/fxstat.c
48
io/fxstat.c
@ -1,48 +0,0 @@
|
||||
/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* Get information about the file descriptor FD in BUF. */
|
||||
int
|
||||
__fxstat (int vers, int fd, struct stat *buf)
|
||||
{
|
||||
if (vers != _STAT_VER)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (fd < 0)
|
||||
{
|
||||
__set_errno (EBADF);
|
||||
return -1;
|
||||
}
|
||||
else if (buf == NULL)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
stub_warning (fstat)
|
||||
hidden_def (__fxstat)
|
||||
weak_alias (__fxstat, _fxstat)
|
@ -1,47 +0,0 @@
|
||||
/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* Get information about the file descriptor FD in BUF. */
|
||||
int
|
||||
__fxstat64 (int vers, int fd, struct stat64 *buf)
|
||||
{
|
||||
if (vers != _STAT_VER)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (fd < 0)
|
||||
{
|
||||
__set_errno (EBADF);
|
||||
return -1;
|
||||
}
|
||||
else if (buf == NULL)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
hidden_def (__fxstat64)
|
||||
stub_warning (fstat64)
|
@ -1,48 +0,0 @@
|
||||
/* Copyright (C) 2005-2020 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* Get information about the file descriptor FD in BUF. */
|
||||
int
|
||||
__fxstatat (int vers, int fd, const char *filename, struct stat *buf, int flag)
|
||||
{
|
||||
if (vers != _STAT_VER)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (fd < 0 && fd != AT_FDCWD)
|
||||
{
|
||||
__set_errno (EBADF);
|
||||
return -1;
|
||||
}
|
||||
if (buf == NULL || (flag & ~AT_SYMLINK_NOFOLLOW) != 0)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
libc_hidden_def (__fxstatat)
|
||||
stub_warning (fstatat)
|
@ -1,49 +0,0 @@
|
||||
/* Copyright (C) 2005-2020 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* Get information about the file descriptor FD in BUF. */
|
||||
int
|
||||
__fxstatat64 (int vers, int fd, const char *filename, struct stat64 *buf,
|
||||
int flag)
|
||||
{
|
||||
if (vers != _STAT_VER)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (fd < 0 && fd != AT_FDCWD)
|
||||
{
|
||||
__set_errno (EBADF);
|
||||
return -1;
|
||||
}
|
||||
if (buf == NULL || (flag & ~AT_SYMLINK_NOFOLLOW) != 0)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
libc_hidden_def (__fxstatat64)
|
||||
stub_warning (fstatat64)
|
@ -17,11 +17,10 @@
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#undef __lstat
|
||||
int
|
||||
__lstat (const char *file, struct stat *buf)
|
||||
{
|
||||
return __lxstat (_STAT_VER, file, buf);
|
||||
return __fstatat (AT_FDCWD, file, buf, AT_SYMLINK_NOFOLLOW);
|
||||
}
|
||||
|
||||
weak_alias (__lstat, lstat)
|
||||
|
@ -17,11 +17,10 @@
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#undef __lstat64
|
||||
int
|
||||
__lstat64 (const char *file, struct stat64 *buf)
|
||||
{
|
||||
return __lxstat64 (_STAT_VER, file, buf);
|
||||
return __fstatat64 (AT_FDCWD, file, buf, AT_SYMLINK_NOFOLLOW);
|
||||
}
|
||||
hidden_def (__lstat64)
|
||||
weak_alias (__lstat64, lstat64)
|
||||
|
26
io/lxstat.c
26
io/lxstat.c
@ -1,26 +0,0 @@
|
||||
/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
int
|
||||
__lxstat (int version, const char *file, struct stat *buf)
|
||||
{
|
||||
return __xstat (version, file, buf);
|
||||
}
|
||||
hidden_def (__lxstat)
|
||||
weak_alias (__lxstat, _lxstat)
|
@ -1,30 +0,0 @@
|
||||
/* lxstat64 -- get file metadata, not following symlinks. Stub version.
|
||||
Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* Get file information about FILE in BUF.
|
||||
If FILE is a symbolic link, do not follow it. */
|
||||
int
|
||||
__lxstat64 (int vers, const char *file, struct stat64 *buf)
|
||||
{
|
||||
return __xstat64 (vers, file, buf);
|
||||
}
|
||||
hidden_def (__lxstat64)
|
@ -17,11 +17,10 @@
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#undef __stat
|
||||
int
|
||||
__stat (const char *file, struct stat *buf)
|
||||
{
|
||||
return __xstat (_STAT_VER, file, buf);
|
||||
return __fstatat (AT_FDCWD, file, buf, 0);
|
||||
}
|
||||
|
||||
weak_alias (__stat, stat)
|
||||
|
@ -17,11 +17,10 @@
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#undef __stat64
|
||||
int
|
||||
__stat64 (const char *file, struct stat64 *buf)
|
||||
{
|
||||
return __xstat64 (_STAT_VER, file, buf);
|
||||
return __fstatat64 (AT_FDCWD, file, buf, 0);
|
||||
}
|
||||
hidden_def (__stat64)
|
||||
weak_alias (__stat64, stat64)
|
||||
|
37
io/xstat.c
37
io/xstat.c
@ -1,37 +0,0 @@
|
||||
/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* Get file information about FILE in BUF. */
|
||||
int
|
||||
__xstat (int vers, const char *file, struct stat *buf)
|
||||
{
|
||||
if (vers != _STAT_VER || file == NULL || buf == NULL)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
hidden_def (__xstat)
|
||||
stub_warning (stat)
|
||||
weak_alias (__xstat, _xstat)
|
36
io/xstat64.c
36
io/xstat64.c
@ -1,36 +0,0 @@
|
||||
/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* Get file information about FILE in BUF. */
|
||||
int
|
||||
__xstat64 (int vers, const char *file, struct stat64 *buf)
|
||||
{
|
||||
if (vers != _STAT_VER || file == NULL || buf == NULL)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
hidden_def (__xstat64)
|
||||
stub_warning (stat64)
|
@ -199,7 +199,9 @@ ifeq (io, $(subdir))
|
||||
sysdep_routines += f_setlk close_nocancel close_nocancel_nostatus \
|
||||
fcntl_nocancel open_nocancel openat_nocancel read_nocancel \
|
||||
pread64_nocancel write_nocancel pwrite64_nocancel \
|
||||
wait4_nocancel
|
||||
wait4_nocancel \
|
||||
xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
|
||||
fxstatat fxstatat64
|
||||
endif
|
||||
|
||||
ifeq (misc, $(subdir))
|
||||
|
@ -61,7 +61,9 @@ sysdep_routines += adjtimex clone umount umount2 readahead sysctl \
|
||||
open_by_handle_at mlock2 pkey_mprotect pkey_set pkey_get \
|
||||
timerfd_gettime timerfd_settime prctl \
|
||||
process_vm_readv process_vm_writev clock_adjtime \
|
||||
time64-support pselect32
|
||||
time64-support pselect32 \
|
||||
xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
|
||||
fxstatat fxstatat64
|
||||
|
||||
CFLAGS-gethostid.c = -fexceptions
|
||||
CFLAGS-tee.c = -fexceptions -fasynchronous-unwind-tables
|
||||
|
Loading…
Reference in New Issue
Block a user