about summary refs log tree commit diff
path: root/include/sys/stat.h
blob: 108cb0c9bfdb17a8754916d2d283e74669ffe4e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#ifndef _SYS_STAT_H
#include <io/sys/stat.h>

#ifndef _ISOMAC
# include <xstatver.h>
# include <struct___timespec64.h>
# include <struct_stat_time64.h>
# include <stdbool.h>

static inline bool
in_ino_t_range (__ino64_t v)
{
  __ino_t s = v;
  return s == v;
}

static inline bool
in_off_t_range (__off64_t v)
{
  __off_t s = v;
  return s == v;
}

static inline bool
in_blkcnt_t_range (__blkcnt64_t v)
{
  __blkcnt_t s = v;
  return s == v;
}

/* 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

# if __TIMESIZE == 64
#  define __stat64_time64  __stat64
#  define __fstat64_time64  __fstat64
#  define __lstat64_time64  __lstat64
#  define __fstatat64_time64  __fstatat64
# else
extern int __stat64_time64 (const char *file, struct __stat64_t64 *buf);
hidden_proto (__stat64_time64);
extern int __lstat64_time64 (const char *file, struct __stat64_t64 *buf);
hidden_proto (__lstat64_time64);
extern int __fstat64_time64 (int fd, struct __stat64_t64 *buf);
hidden_proto (__fstat64_time64);
extern int __fstatat64_time64 (int dirfd, const char *pathname,
			       struct __stat64_t64 *buf, int flags);
hidden_proto (__fstatat64_time64);
# endif

extern int __chmod (const char *__file, __mode_t __mode);
libc_hidden_proto (__chmod)
extern int __fchmod (int __fd, __mode_t __mode);
libc_hidden_proto (fchmodat)
extern __mode_t __umask (__mode_t __mask);
extern int __mkdir (const char *__path, __mode_t __mode);
libc_hidden_proto (__mkdir)

extern int __mknodat (int fd, const char *path, mode_t mode, dev_t dev);
libc_hidden_proto (__mknodat);
extern int __mknod (const char *__path,
		    __mode_t __mode, __dev_t __dev);
libc_hidden_proto (__mknod);

extern int __xmknod (int __ver, const char *__path, __mode_t __mode,
		     __dev_t *__dev);
extern int __xmknodat (int __ver, int __fd, const char *__path,
		       __mode_t __mode, __dev_t *__dev);

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);

# ifdef NO_RTLD_HIDDEN
/* These are still required for Hurd.  */
libc_hidden_proto (__fxstat);
libc_hidden_proto (__xstat);
libc_hidden_proto (__lxstat);
libc_hidden_proto (__fxstatat);
#  if IS_IN (libc)
hidden_proto (__fxstat64);
hidden_proto (__xstat64);
hidden_proto (__lxstat64);
hidden_proto (__fxstatat64);
#  endif
libc_hidden_proto (__xmknod)
libc_hidden_proto (__xmknodat)
#  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