1
+ /* SPDX-License-Identifier: BSD-3-Clause */
1
2
/*
2
- Copyright (c) 1982, 1986, 1993
3
- The Regents of the University of California. All rights reserved.
4
-
5
- Redistribution and use in source and binary forms, with or without
6
- modification, are permitted provided that the following conditions
7
- are met:
8
- 1. Redistributions of source code must retain the above copyright
9
- notice, this list of conditions and the following disclaimer.
10
- 2. Redistributions in binary form must reproduce the above copyright
11
- notice, this list of conditions and the following disclaimer in the
12
- documentation and/or other materials provided with the distribution.
13
- 3. Neither the name of the University nor the names of its contributors
14
- may be used to endorse or promote products derived from this software
15
- without specific prior written permission.
16
-
17
- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
- SUCH DAMAGE.
3
+ * Copyright (c) 1982, 1986, 1993
4
+ * The Regents of the University of California. All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * 3. Neither the name of the University nor the names of its contributors
15
+ * may be used to endorse or promote products derived from this software
16
+ * without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28
+ * SUCH DAMAGE.
28
29
*/
29
- #ifndef _SYS_STAT_H
30
- #define _SYS_STAT_H
30
+ #ifndef ZEPHYR_POSIX_SYS_STAT_H_
31
+ #define ZEPHYR_POSIX_SYS_STAT_H_
31
32
32
33
#ifdef __cplusplus
33
34
extern "C" {
@@ -41,65 +42,66 @@ extern "C" {
41
42
/* dj's stat defines _STAT_H_ */
42
43
#ifndef _STAT_H_
43
44
44
- /* It is intended that the layout of this structure not change when the
45
- sizes of any of the basic types change (short, int, long) [via a compile
46
- time option]. */
45
+ /*
46
+ * It is intended that the layout of this structure not change when the
47
+ * sizes of any of the basic types change (short, int, long) [via a compile
48
+ * time option].
49
+ */
47
50
48
51
#ifdef __CYGWIN__
49
52
#include <cygwin/stat.h>
50
53
#ifdef _LIBC
51
54
#define stat64 stat
52
55
#endif
53
56
#else
54
- struct stat
55
- {
56
- dev_t st_dev ;
57
- ino_t st_ino ;
58
- mode_t st_mode ;
59
- nlink_t st_nlink ;
60
- uid_t st_uid ;
61
- gid_t st_gid ;
57
+ struct stat {
58
+ dev_t st_dev ;
59
+ ino_t st_ino ;
60
+ mode_t st_mode ;
61
+ nlink_t st_nlink ;
62
+ uid_t st_uid ;
63
+ gid_t st_gid ;
62
64
#if defined(__linux ) && defined(__x86_64__ )
63
- int __pad0 ;
65
+ int __pad0 ;
64
66
#endif
65
- dev_t st_rdev ;
67
+ dev_t st_rdev ;
66
68
#if defined(__linux ) && !defined(__x86_64__ )
67
- unsigned short int __pad2 ;
69
+ unsigned short int __pad2 ;
68
70
#endif
69
- off_t st_size ;
71
+ off_t st_size ;
70
72
#if defined(__linux )
71
- blksize_t st_blksize ;
72
- blkcnt_t st_blocks ;
73
- struct timespec st_atim ;
74
- struct timespec st_mtim ;
75
- struct timespec st_ctim ;
76
- #define st_atime st_atim.tv_sec /* Backward compatibility */
73
+ blksize_t st_blksize ;
74
+ blkcnt_t st_blocks ;
75
+ struct timespec st_atim ;
76
+ struct timespec st_mtim ;
77
+ struct timespec st_ctim ;
78
+ #define st_atime st_atim.tv_sec /* Backward compatibility */
77
79
#define st_mtime st_mtim.tv_sec
78
80
#define st_ctime st_ctim.tv_sec
79
81
#if defined(__linux ) && defined(__x86_64__ )
80
- __uint64_t __glibc_reserved [3 ];
82
+ __uint64_t __glibc_reserved [3 ];
81
83
#endif
82
84
#else
83
85
#if defined(__rtems__ )
84
- struct timespec st_atim ;
85
- struct timespec st_mtim ;
86
- struct timespec st_ctim ;
87
- blksize_t st_blksize ;
88
- blkcnt_t st_blocks ;
86
+ struct timespec st_atim ;
87
+ struct timespec st_mtim ;
88
+ struct timespec st_ctim ;
89
+ blksize_t st_blksize ;
90
+ blkcnt_t st_blocks ;
89
91
#else
90
- /* SysV/sco doesn't have the rest... But Solaris, eabi does. */
92
+ /* SysV/sco doesn't have the rest... But Solaris, eabi does. */
91
93
#if defined(__svr4__ ) && !defined(__PPC__ ) && !defined(__sun__ )
92
- time_t st_atime ;
93
- time_t st_mtime ;
94
- time_t st_ctime ;
94
+ time_t st_atime ;
95
+ time_t st_mtime ;
96
+ time_t st_ctime ;
95
97
#else
96
- struct timespec st_atim ;
97
- struct timespec st_mtim ;
98
- struct timespec st_ctim ;
99
- blksize_t st_blksize ;
100
- blkcnt_t st_blocks ;
98
+ struct timespec st_atim ;
99
+ struct timespec st_mtim ;
100
+ struct timespec st_ctim ;
101
+ blksize_t st_blksize ;
102
+ blkcnt_t st_blocks ;
101
103
#if !defined(__rtems__ )
102
- long st_spare4 [2 ];
104
+ long st_spare4 [2 ];
103
105
#endif
104
106
#endif
105
107
#endif
@@ -114,122 +116,126 @@ struct stat
114
116
115
117
#endif
116
118
117
- #define _IFMT 0170000 /* type of file */
118
- #define _IFDIR 0040000 /* directory */
119
- #define _IFCHR 0020000 /* character special */
120
- #define _IFBLK 0060000 /* block special */
121
- #define _IFREG 0100000 /* regular */
122
- #define _IFLNK 0120000 /* symbolic link */
123
- #define _IFSOCK 0140000 /* socket */
124
- #define _IFIFO 0010000 /* fifo */
119
+ #define _IFMT 0170000 /* type of file */
120
+ #define _IFDIR 0040000 /* directory */
121
+ #define _IFCHR 0020000 /* character special */
122
+ #define _IFBLK 0060000 /* block special */
123
+ #define _IFREG 0100000 /* regular */
124
+ #define _IFLNK 0120000 /* symbolic link */
125
+ #define _IFSOCK 0140000 /* socket */
126
+ #define _IFIFO 0010000 /* fifo */
125
127
126
- #define S_BLKSIZE 1024 /* size of a block */
128
+ #define S_BLKSIZE 1024 /* size of a block */
127
129
128
- #define S_ISUID 0004000 /* set user id on execution */
129
- #define S_ISGID 0002000 /* set group id on execution */
130
- #define S_ISVTX 0001000 /* save swapped text even after use */
130
+ #define S_ISUID 0004000 /* set user id on execution */
131
+ #define S_ISGID 0002000 /* set group id on execution */
132
+ #define S_ISVTX 0001000 /* save swapped text even after use */
131
133
#if __BSD_VISIBLE
132
- #define S_IREAD 0000400 /* read permission, owner */
133
- #define S_IWRITE 0000200 /* write permission, owner */
134
- #define S_IEXEC 0000100 /* execute/search permission, owner */
135
- #define S_ENFMT 0002000 /* enforcement-mode locking */
136
- #endif /* !_BSD_VISIBLE */
137
-
138
- #define S_IFMT _IFMT
139
- #define S_IFDIR _IFDIR
140
- #define S_IFCHR _IFCHR
141
- #define S_IFBLK _IFBLK
142
- #define S_IFREG _IFREG
143
- #define S_IFLNK _IFLNK
144
- #define S_IFSOCK _IFSOCK
145
- #define S_IFIFO _IFIFO
134
+ #define S_IREAD 0000400 /* read permission, owner */
135
+ #define S_IWRITE 0000200 /* write permission, owner */
136
+ #define S_IEXEC 0000100 /* execute/search permission, owner */
137
+ #define S_ENFMT 0002000 /* enforcement-mode locking */
138
+ #endif /* !_BSD_VISIBLE */
139
+
140
+ #define S_IFMT _IFMT
141
+ #define S_IFDIR _IFDIR
142
+ #define S_IFCHR _IFCHR
143
+ #define S_IFBLK _IFBLK
144
+ #define S_IFREG _IFREG
145
+ #define S_IFLNK _IFLNK
146
+ #define S_IFSOCK _IFSOCK
147
+ #define S_IFIFO _IFIFO
146
148
147
149
#ifdef _WIN32
148
- /* The Windows header files define _S_ forms of these, so we do too
149
- for easier portability. */
150
- #define _S_IFMT _IFMT
151
- #define _S_IFDIR _IFDIR
152
- #define _S_IFCHR _IFCHR
153
- #define _S_IFIFO _IFIFO
154
- #define _S_IFREG _IFREG
155
- #define _S_IREAD 0000400
156
- #define _S_IWRITE 0000200
157
- #define _S_IEXEC 0000100
158
- #endif
159
-
160
- #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
161
- #define S_IRUSR 0000400 /* read permission, owner */
162
- #define S_IWUSR 0000200 /* write permission, owner */
163
- #define S_IXUSR 0000100/* execute/search permission, owner */
164
- #define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
165
- #define S_IRGRP 0000040 /* read permission, group */
166
- #define S_IWGRP 0000020 /* write permission, grougroup */
167
- #define S_IXGRP 0000010/* execute/search permission, group */
168
- #define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
169
- #define S_IROTH 0000004 /* read permission, other */
170
- #define S_IWOTH 0000002 /* write permission, other */
171
- #define S_IXOTH 0000001/* execute/search permission, other */
150
+ /*
151
+ * The Windows header files define _S_ forms of these, so we do too
152
+ * for easier portability.
153
+ */
154
+ #define _S_IFMT _IFMT
155
+ #define _S_IFDIR _IFDIR
156
+ #define _S_IFCHR _IFCHR
157
+ #define _S_IFIFO _IFIFO
158
+ #define _S_IFREG _IFREG
159
+ #define _S_IREAD 0000400
160
+ #define _S_IWRITE 0000200
161
+ #define _S_IEXEC 0000100
162
+ #endif
163
+
164
+ #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
165
+ #define S_IRUSR 0000400 /* read permission, owner */
166
+ #define S_IWUSR 0000200 /* write permission, owner */
167
+ #define S_IXUSR 0000100 /* execute/search permission, owner */
168
+ #define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
169
+ #define S_IRGRP 0000040 /* read permission, group */
170
+ #define S_IWGRP 0000020 /* write permission, grougroup */
171
+ #define S_IXGRP 0000010 /* execute/search permission, group */
172
+ #define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
173
+ #define S_IROTH 0000004 /* read permission, other */
174
+ #define S_IWOTH 0000002 /* write permission, other */
175
+ #define S_IXOTH 0000001 /* execute/search permission, other */
172
176
173
177
#if __BSD_VISIBLE
174
- #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* 0777 */
175
- #define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO) /* 07777 */
178
+ #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* 0777 */
179
+ #define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO) /* 07777 */
176
180
#define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) /* 0666 */
177
181
#endif
178
182
179
- #define S_ISBLK (m ) (((m)&_IFMT) == _IFBLK)
180
- #define S_ISCHR (m ) (((m)&_IFMT) == _IFCHR)
181
- #define S_ISDIR (m ) (((m)&_IFMT) == _IFDIR)
182
- #define S_ISFIFO (m ) (((m)&_IFMT) == _IFIFO)
183
- #define S_ISREG (m ) (((m)&_IFMT) == _IFREG)
184
- #define S_ISLNK (m ) (((m)&_IFMT) == _IFLNK)
185
- #define S_ISSOCK (m ) (((m)&_IFMT) == _IFSOCK)
183
+ #define S_ISBLK (m ) (((m)&_IFMT) == _IFBLK)
184
+ #define S_ISCHR (m ) (((m)&_IFMT) == _IFCHR)
185
+ #define S_ISDIR (m ) (((m)&_IFMT) == _IFDIR)
186
+ #define S_ISFIFO (m ) (((m)&_IFMT) == _IFIFO)
187
+ #define S_ISREG (m ) (((m)&_IFMT) == _IFREG)
188
+ #define S_ISLNK (m ) (((m)&_IFMT) == _IFLNK)
189
+ #define S_ISSOCK (m ) (((m)&_IFMT) == _IFSOCK)
186
190
187
191
#if defined(__CYGWIN__ ) || defined(__rtems__ )
188
192
/* Special tv_nsec values for futimens(2) and utimensat(2). */
189
- #define UTIME_NOW -2L
190
- #define UTIME_OMIT -1L
193
+ #define UTIME_NOW -2L
194
+ #define UTIME_OMIT -1L
191
195
#endif
192
196
193
- int chmod (const char * __path , mode_t __mode );
194
- int fchmod (int __fd , mode_t __mode );
195
- int fstat (int __fd , struct stat * __sbuf );
196
- int mkdir (const char * _path , mode_t __mode );
197
- int mkfifo (const char * __path , mode_t __mode );
198
- int stat (const char * __restrict __path , struct stat * __restrict __sbuf );
199
- mode_t umask (mode_t __mask );
197
+ int chmod (const char * __path , mode_t __mode );
198
+ int fchmod (int __fd , mode_t __mode );
199
+ int fstat (int __fd , struct stat * __sbuf );
200
+ int mkdir (const char * _path , mode_t __mode );
201
+ int mkfifo (const char * __path , mode_t __mode );
202
+ int stat (const char * __restrict __path , struct stat * __restrict __sbuf );
203
+ mode_t umask (mode_t __mask );
200
204
201
- #if defined (__SPU__ ) || defined(__rtems__ ) || defined(__CYGWIN__ ) && !defined(__INSIDE_CYGWIN__ )
202
- int lstat (const char * __restrict __path , struct stat * __restrict __buf );
203
- int mknod (const char * __path , mode_t __mode , dev_t __dev );
205
+ #if defined(__SPU__ ) || defined(__rtems__ ) || defined(__CYGWIN__ ) && !defined(__INSIDE_CYGWIN__ )
206
+ int lstat (const char * __restrict __path , struct stat * __restrict __buf );
207
+ int mknod (const char * __path , mode_t __mode , dev_t __dev );
204
208
#endif
205
209
206
210
#if __ATFILE_VISIBLE && !defined(__INSIDE_CYGWIN__ )
207
- int fchmodat (int , const char * , mode_t , int );
208
- int fstatat (int , const char * __restrict , struct stat * __restrict, int );
209
- int mkdirat (int , const char * , mode_t );
210
- int mkfifoat (int , const char * , mode_t );
211
- int mknodat (int , const char * , mode_t , dev_t );
212
- int utimensat (int , const char * , const struct timespec [2 ], int );
211
+ int fchmodat (int __fd , const char * __path , mode_t __mode , int __flag );
212
+ int fstatat (int __fd , const char * __restrict __path , struct stat * __restrict __buf , int __flag );
213
+ int mkdirat (int __fd , const char * __path , mode_t __mode );
214
+ int mkfifoat (int __fd , const char * __path , mode_t __mode );
215
+ int mknodat (int __fd , const char * __path , mode_t __mode , dev_t __dev );
216
+ int utimensat (int __fd , const char * __path , const struct timespec __times [2 ], int __flag );
213
217
#endif
214
218
#if __POSIX_VISIBLE >= 200809 && !defined(__INSIDE_CYGWIN__ )
215
- int futimens (int , const struct timespec [2 ]);
219
+ int futimens (int __fd , const struct timespec __times [2 ]);
216
220
#endif
217
221
218
- /* Provide prototypes for most of the _<systemcall> names that are
219
- provided in newlib for some compilers. */
222
+ /*
223
+ * Provide prototypes for most of the _<systemcall> names that are
224
+ * provided in newlib for some compilers.
225
+ */
220
226
#ifdef _LIBC
221
- int _fstat (int __fd , struct stat * __sbuf );
222
- int _stat (const char * __restrict __path , struct stat * __restrict __sbuf );
223
- int _mkdir (const char * _path , mode_t __mode );
227
+ int _fstat (int __fd , struct stat * __sbuf );
228
+ int _stat (const char * __restrict __path , struct stat * __restrict __sbuf );
229
+ int _mkdir (const char * _path , mode_t __mode );
224
230
#ifdef __LARGE64_FILES
225
231
struct stat64 ;
226
- int _stat64 (const char * __restrict __path , struct stat64 * __restrict __sbuf );
227
- int _fstat64 (int __fd , struct stat64 * __sbuf );
232
+ int _stat64 (const char * __restrict __path , struct stat64 * __restrict __sbuf );
233
+ int _fstat64 (int __fd , struct stat64 * __sbuf );
228
234
#endif
229
235
#endif
230
236
231
237
#endif /* !_STAT_H_ */
232
238
#ifdef __cplusplus
233
239
}
234
240
#endif
235
- #endif /* _SYS_STAT_H */
241
+ #endif /* ZEPHYR_POSIX_SYS_STAT_H_ */
0 commit comments