diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/sys/stat.h | 92 |
1 files changed, 55 insertions, 37 deletions
diff --git a/include/sys/stat.h b/include/sys/stat.h index f8847cf73e..061204b1fc 100644 --- a/include/sys/stat.h +++ b/include/sys/stat.h @@ -2,10 +2,26 @@ #include <io/sys/stat.h> #ifndef _ISOMAC +# include <xstatver.h> + /* Now define the internal interfaces. */ extern int __stat (const char *__file, struct stat *__buf); +extern int __stat64 (const char *__file, struct stat64 *__buf); extern int __fstat (int __fd, struct stat *__buf); +extern int __fstat64 (int __fd, struct stat64 *__buf); extern int __lstat (const char *__file, struct stat *__buf); +extern int __lstat64 (const char *__file, struct stat64 *__buf); +extern int __fstatat (int dirfd, const char *pathname, struct stat *buf, + int flags); +extern int __fstatat64 (int dirfd, const char *pathname, struct stat64 *buf, + int flags); +# if IS_IN (libc) || (IS_IN (rtld) && !defined NO_RTLD_HIDDEN) +hidden_proto (__stat64) +hidden_proto (__fstat64) +hidden_proto (__lstat64) +hidden_proto (__fstatat64) +# endif + extern int __chmod (const char *__file, __mode_t __mode); libc_hidden_proto (__chmod) extern int __fchmod (int __fd, __mode_t __mode); @@ -15,18 +31,6 @@ extern int __mkdir (const char *__path, __mode_t __mode); libc_hidden_proto (__mkdir) extern int __mknod (const char *__path, __mode_t __mode, __dev_t __dev); -#if IS_IN (libc) || (IS_IN (rtld) && !defined NO_RTLD_HIDDEN) -hidden_proto (__fxstat) -hidden_proto (__fxstat64) -hidden_proto (__lxstat) -hidden_proto (__lxstat64) -hidden_proto (__xstat) -hidden_proto (__xstat64) -#endif -extern __inline__ int __stat (const char *__path, struct stat *__statbuf) -{ - return __xstat (_STAT_VER, __path, __statbuf); -} libc_hidden_proto (__xmknod) extern __inline__ int __mknod (const char *__path, __mode_t __mode, __dev_t __dev) @@ -35,32 +39,46 @@ extern __inline__ int __mknod (const char *__path, __mode_t __mode, } libc_hidden_proto (__xmknodat) -libc_hidden_proto (__fxstatat) -libc_hidden_proto (__fxstatat64) - -# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN -extern __typeof (__fxstatat64) __fxstatat64 attribute_hidden; +int __fxstat (int __ver, int __fildes, struct stat *__stat_buf); +int __xstat (int __ver, const char *__filename, + struct stat *__stat_buf); +int __lxstat (int __ver, const char *__filename, struct stat *__stat_buf); +int __fxstatat (int __ver, int __fildes, const char *__filename, + struct stat *__stat_buf, int __flag); +int __fxstat64 (int ver, int __fildes, struct stat64 *__stat_buf); +int __xstat64 (int ver, const char *__filename, struct stat64 *__stat_buf); +int __lxstat64 (int ver, const char *__filename, struct stat64 *__stat_buf); +int __fxstatat64 (int ver, int __fildes, const char *__filename, + struct stat64 *__stat_buf, int __flag); +libc_hidden_proto (__fxstat); +libc_hidden_proto (__xstat); +libc_hidden_proto (__lxstat); +libc_hidden_proto (__fxstatat); +# if IS_IN (libc) || (IS_IN (rtld) && !defined NO_RTLD_HIDDEN) +hidden_proto (__fxstat64); +hidden_proto (__xstat64); +hidden_proto (__lxstat64); +hidden_proto (__fxstatat64); # endif -/* The `stat', `fstat', `lstat' functions have to be handled special since - even while not compiling the library with optimization calls to these - functions in the shared library must reference the `xstat' etc functions. - We have to use macros but we cannot define them in the normal headers - since on user level we must use real functions. */ -#define stat(fname, buf) __xstat (_STAT_VER, fname, buf) -#define lstat(fname, buf) __lxstat (_STAT_VER, fname, buf) -#define __lstat(fname, buf) __lxstat (_STAT_VER, fname, buf) -#define lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf) -#define __lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf) -#define stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf) -#define __stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf) -#define fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf) -#define __fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf) -#define fstat(fd, buf) __fxstat (_STAT_VER, fd, buf) -#define __fstat(fd, buf) __fxstat (_STAT_VER, fd, buf) -#define __fstatat(dfd, fname, buf, flag) \ - __fxstatat (_STAT_VER, dfd, fname, buf, flag) -#define __fstatat64(dfd, fname, buf, flag) \ - __fxstatat64 (_STAT_VER, dfd, fname, buf, flag) +# ifdef NO_RTLD_HIDDEN +/* These are still required for Hurd. */ +# define stat(fname, buf) __xstat (_STAT_VER, fname, buf) +# define lstat(fname, buf) __lxstat (_STAT_VER, fname, buf) +# define __lstat(fname, buf) __lxstat (_STAT_VER, fname, buf) +# define lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf) +# define __lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf) +# define stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf) +# define __stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf) +# define fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf) +# define __fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf) +# define fstat(fd, buf) __fxstat (_STAT_VER, fd, buf) +# define __fstat(fd, buf) __fxstat (_STAT_VER, fd, buf) +# define __fstatat(dfd, fname, buf, flag) \ + __fxstatat (_STAT_VER, dfd, fname, buf, flag) +# define __fstatat64(dfd, fname, buf, flag) \ + __fxstatat64 (_STAT_VER, dfd, fname, buf, flag) +# endif /* NO_RTLD_HIDDEN */ + #endif #endif |