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