source: trunk/libs/newlib/src/newlib/libc/include/sys/stat.h @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 5.6 KB
Line 
1#ifndef _SYS_STAT_H
2#define _SYS_STAT_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#include <_ansi.h>
9#include <time.h>
10#include <sys/cdefs.h>
11#include <sys/types.h>
12#include <sys/_timespec.h>
13
14/* dj's stat defines _STAT_H_ */
15#ifndef _STAT_H_
16
17/* It is intended that the layout of this structure not change when the
18   sizes of any of the basic types change (short, int, long) [via a compile
19   time option].  */
20
21#ifdef __CYGWIN__
22#include <cygwin/stat.h>
23#ifdef _COMPILING_NEWLIB
24#define stat64 stat
25#endif
26#else
27struct  stat
28{
29  dev_t         st_dev;
30  ino_t         st_ino;
31  mode_t        st_mode;
32  nlink_t       st_nlink;
33  uid_t         st_uid;
34  gid_t         st_gid;
35  dev_t         st_rdev;
36  off_t         st_size;
37#if defined(__rtems__)
38  struct timespec st_atim;
39  struct timespec st_mtim;
40  struct timespec st_ctim;
41  blksize_t     st_blksize;
42  blkcnt_t      st_blocks;
43#else
44  /* SysV/sco doesn't have the rest... But Solaris, eabi does.  */
45#if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__)
46  time_t        st_atime;
47  time_t        st_mtime;
48  time_t        st_ctime;
49#else
50  time_t        st_atime;
51  long          st_spare1;
52  time_t        st_mtime;
53  long          st_spare2;
54  time_t        st_ctime;
55  long          st_spare3;
56  blksize_t     st_blksize;
57  blkcnt_t      st_blocks;
58  long  st_spare4[2];
59#endif
60#endif
61};
62
63#if defined(__rtems__)
64#define st_atime st_atim.tv_sec
65#define st_ctime st_ctim.tv_sec
66#define st_mtime st_mtim.tv_sec
67#endif
68
69#endif
70
71#define _IFMT           0170000 /* type of file */
72#define         _IFDIR  0040000 /* directory */
73#define         _IFCHR  0020000 /* character special */
74#define         _IFBLK  0060000 /* block special */
75#define         _IFREG  0100000 /* regular */
76#define         _IFLNK  0120000 /* symbolic link */
77#define         _IFSOCK 0140000 /* socket */
78#define         _IFIFO  0010000 /* fifo */
79
80#define         S_BLKSIZE  1024 /* size of a block */
81
82#define S_ISUID         0004000 /* set user id on execution */
83#define S_ISGID         0002000 /* set group id on execution */
84#define S_ISVTX         0001000 /* save swapped text even after use */
85#if __BSD_VISIBLE
86#define S_IREAD         0000400 /* read permission, owner */
87#define S_IWRITE        0000200 /* write permission, owner */
88#define S_IEXEC         0000100 /* execute/search permission, owner */
89#define S_ENFMT         0002000 /* enforcement-mode locking */
90#endif  /* !_BSD_VISIBLE */
91
92#define S_IFMT          _IFMT
93#define S_IFDIR         _IFDIR
94#define S_IFCHR         _IFCHR
95#define S_IFBLK         _IFBLK
96#define S_IFREG         _IFREG
97#define S_IFLNK         _IFLNK
98#define S_IFSOCK        _IFSOCK
99#define S_IFIFO         _IFIFO
100
101#ifdef _WIN32
102/* The Windows header files define _S_ forms of these, so we do too
103   for easier portability.  */
104#define _S_IFMT         _IFMT
105#define _S_IFDIR        _IFDIR
106#define _S_IFCHR        _IFCHR
107#define _S_IFIFO        _IFIFO
108#define _S_IFREG        _IFREG
109#define _S_IREAD        0000400
110#define _S_IWRITE       0000200
111#define _S_IEXEC        0000100
112#endif
113
114#define S_IRWXU         (S_IRUSR | S_IWUSR | S_IXUSR)
115#define         S_IRUSR 0000400 /* read permission, owner */
116#define         S_IWUSR 0000200 /* write permission, owner */
117#define         S_IXUSR 0000100/* execute/search permission, owner */
118#define S_IRWXG         (S_IRGRP | S_IWGRP | S_IXGRP)
119#define         S_IRGRP 0000040 /* read permission, group */
120#define         S_IWGRP 0000020 /* write permission, grougroup */
121#define         S_IXGRP 0000010/* execute/search permission, group */
122#define S_IRWXO         (S_IROTH | S_IWOTH | S_IXOTH)
123#define         S_IROTH 0000004 /* read permission, other */
124#define         S_IWOTH 0000002 /* write permission, other */
125#define         S_IXOTH 0000001/* execute/search permission, other */
126
127#if __BSD_VISIBLE
128#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* 0777 */
129#define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO) /* 07777 */
130#define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) /* 0666 */
131#endif
132
133#define S_ISBLK(m)      (((m)&_IFMT) == _IFBLK)
134#define S_ISCHR(m)      (((m)&_IFMT) == _IFCHR)
135#define S_ISDIR(m)      (((m)&_IFMT) == _IFDIR)
136#define S_ISFIFO(m)     (((m)&_IFMT) == _IFIFO)
137#define S_ISREG(m)      (((m)&_IFMT) == _IFREG)
138#define S_ISLNK(m)      (((m)&_IFMT) == _IFLNK)
139#define S_ISSOCK(m)     (((m)&_IFMT) == _IFSOCK)
140
141#if defined(__CYGWIN__)
142/* Special tv_nsec values for futimens(2) and utimensat(2). */
143#define UTIME_NOW       -2L
144#define UTIME_OMIT      -1L
145#endif
146
147int     chmod (const char *__path, mode_t __mode );
148int     fchmod (int __fd, mode_t __mode);
149int     fstat (int __fd, struct stat *__sbuf );
150int     mkdir (const char *_path, mode_t __mode );
151int     mkfifo (const char *__path, mode_t __mode );
152int     stat (const char *__restrict __path, struct stat *__restrict __sbuf );
153mode_t  umask (mode_t __mask );
154
155#if defined (__SPU__) || defined(__rtems__) || defined(__CYGWIN__) && !defined(__INSIDE_CYGWIN__)
156int     lstat (const char *__restrict __path, struct stat *__restrict __buf );
157int     mknod (const char *__path, mode_t __mode, dev_t __dev );
158#endif
159
160#if __ATFILE_VISIBLE && !defined(__INSIDE_CYGWIN__)
161int     fchmodat (int, const char *, mode_t, int);
162int     fstatat (int, const char *__restrict , struct stat *__restrict, int);
163int     mkdirat (int, const char *, mode_t);
164int     mkfifoat (int, const char *, mode_t);
165int     mknodat (int, const char *, mode_t, dev_t);
166int     utimensat (int, const char *, const struct timespec *, int);
167#endif
168#if __POSIX_VISIBLE >= 200809 && !defined(__INSIDE_CYGWIN__)
169int     futimens (int, const struct timespec *);
170#endif
171
172/* Provide prototypes for most of the _<systemcall> names that are
173   provided in newlib for some compilers.  */
174#ifdef _COMPILING_NEWLIB
175int     _fstat (int __fd, struct stat *__sbuf );
176int     _stat (const char *__restrict __path, struct stat *__restrict __sbuf );
177int     _mkdir (const char *_path, mode_t __mode );
178#ifdef __LARGE64_FILES
179struct stat64;
180int     _stat64 (const char *__restrict __path, struct stat64 *__restrict __sbuf );
181int     _fstat64 (int __fd, struct stat64 *__sbuf );
182#endif
183#endif
184
185#endif /* !_STAT_H_ */
186#ifdef __cplusplus
187}
188#endif
189#endif /* _SYS_STAT_H */
Note: See TracBrowser for help on using the repository browser.