aboutsummaryrefslogtreecommitdiff
path: root/include/sys
diff options
context:
space:
mode:
Diffstat (limited to 'include/sys')
-rw-r--r--include/sys/stat.h92
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