00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef _SYS_STAT_H_
00039 #define _SYS_STAT_H_
00040
00041 #include <sys/cdefs.h>
00042 #include <sys/_types.h>
00043
00044 #ifndef _BLKSIZE_T_DECLARED
00045 typedef __blksize_t blksize_t;
00046 #define _BLKSIZE_T_DECLARED
00047 #endif
00048
00049 #ifndef _BLKCNT_T_DECLARED
00050 typedef __blkcnt_t blkcnt_t;
00051 #define _BLKCNT_T_DECLARED
00052 #endif
00053
00054 #ifndef _DEV_T_DECLARED
00055 typedef __dev_t dev_t;
00056 #define _DEV_T_DECLARED
00057 #endif
00058
00059 #ifndef _FFLAGS_T_DECLARED
00060 typedef __fflags_t fflags_t;
00061 #define _FFLAGS_T_DECLARED
00062 #endif
00063
00064 #ifndef _GID_T_DECLARED
00065 typedef __gid_t gid_t;
00066 #define _GID_T_DECLARED
00067 #endif
00068
00069 #ifndef _INO_T_DECLARED
00070 typedef __ino_t ino_t;
00071 #define _INO_T_DECLARED
00072 #endif
00073
00074 #ifndef _MODE_T_DECLARED
00075 typedef __mode_t mode_t;
00076 #define _MODE_T_DECLARED
00077 #endif
00078
00079 #ifndef _NLINK_T_DECLARED
00080 typedef __nlink_t nlink_t;
00081 #define _NLINK_T_DECLARED
00082 #endif
00083
00084 #ifndef _OFF_T_DECLARED
00085 typedef __off_t off_t;
00086 #define _OFF_T_DECLARED
00087 #endif
00088
00089 #ifndef _TIME_T_DECLARED
00090 typedef __time_t time_t;
00091 #define _TIME_T_DECLARED
00092 #endif
00093
00094 #ifndef _UID_T_DECLARED
00095 typedef __uid_t uid_t;
00096 #define _UID_T_DECLARED
00097 #endif
00098
00099 #if !defined(_KERNEL) && __BSD_VISIBLE
00100
00101
00102
00103
00104 #include <sys/time.h>
00105 #endif
00106
00107 #if !__BSD_VISIBLE
00108 #include <sys/_timespec.h>
00109 #endif
00110
00111 #if __BSD_VISIBLE
00112 struct ostat {
00113 __uint16_t st_dev;
00114 ino_t st_ino;
00115 mode_t st_mode;
00116 nlink_t st_nlink;
00117 __uint16_t st_uid;
00118 __uint16_t st_gid;
00119 __uint16_t st_rdev;
00120 __int32_t st_size;
00121 struct timespec st_atimespec;
00122 struct timespec st_mtimespec;
00123 struct timespec st_ctimespec;
00124 __int32_t st_blksize;
00125 __int32_t st_blocks;
00126 fflags_t st_flags;
00127 __uint32_t st_gen;
00128 };
00129 #endif
00130
00131 struct stat {
00132 __dev_t st_dev;
00133 ino_t st_ino;
00134 mode_t st_mode;
00135 nlink_t st_nlink;
00136 uid_t st_uid;
00137 gid_t st_gid;
00138 __dev_t st_rdev;
00139 #if __BSD_VISIBLE
00140 struct timespec st_atimespec;
00141 struct timespec st_mtimespec;
00142 struct timespec st_ctimespec;
00143 #else
00144 time_t st_atime;
00145 long __st_atimensec;
00146 time_t st_mtime;
00147 long __st_mtimensec;
00148 time_t st_ctime;
00149 long __st_ctimensec;
00150 #endif
00151 off_t st_size;
00152 blkcnt_t st_blocks;
00153 blksize_t st_blksize;
00154 fflags_t st_flags;
00155 __uint32_t st_gen;
00156 __int32_t st_lspare;
00157 #if __BSD_VISIBLE
00158 struct timespec st_birthtimespec;
00159
00160
00161
00162
00163
00164
00165
00166
00167 unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
00168 unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
00169 #else
00170 time_t st_birthtime;
00171 long st_birthtimensec;
00172 unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
00173 unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
00174 #endif
00175 };
00176
00177 #if __BSD_VISIBLE
00178 struct nstat {
00179 __dev_t st_dev;
00180 ino_t st_ino;
00181 __uint32_t st_mode;
00182 __uint32_t st_nlink;
00183 uid_t st_uid;
00184 gid_t st_gid;
00185 __dev_t st_rdev;
00186 struct timespec st_atimespec;
00187 struct timespec st_mtimespec;
00188 struct timespec st_ctimespec;
00189 off_t st_size;
00190 blkcnt_t st_blocks;
00191 blksize_t st_blksize;
00192 fflags_t st_flags;
00193 __uint32_t st_gen;
00194 struct timespec st_birthtimespec;
00195
00196
00197
00198 unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
00199 unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
00200 };
00201 #endif
00202
00203 #if __BSD_VISIBLE
00204 #define st_atime st_atimespec.tv_sec
00205 #define st_mtime st_mtimespec.tv_sec
00206 #define st_ctime st_ctimespec.tv_sec
00207 #define st_birthtime st_birthtimespec.tv_sec
00208 #endif
00209
00210 #define S_ISUID 0004000
00211 #define S_ISGID 0002000
00212 #if __BSD_VISIBLE
00213 #define S_ISTXT 0001000
00214 #endif
00215
00216 #define S_IRWXU 0000700
00217 #define S_IRUSR 0000400
00218 #define S_IWUSR 0000200
00219 #define S_IXUSR 0000100
00220
00221 #if __BSD_VISIBLE
00222 #define S_IREAD S_IRUSR
00223 #define S_IWRITE S_IWUSR
00224 #define S_IEXEC S_IXUSR
00225 #endif
00226
00227 #define S_IRWXG 0000070
00228 #define S_IRGRP 0000040
00229 #define S_IWGRP 0000020
00230 #define S_IXGRP 0000010
00231
00232 #define S_IRWXO 0000007
00233 #define S_IROTH 0000004
00234 #define S_IWOTH 0000002
00235 #define S_IXOTH 0000001
00236
00237 #if __XSI_VISIBLE
00238 #define S_IFMT 0170000
00239 #define S_IFIFO 0010000
00240 #define S_IFCHR 0020000
00241 #define S_IFDIR 0040000
00242 #define S_IFBLK 0060000
00243 #define S_IFREG 0100000
00244 #define S_IFLNK 0120000
00245 #define S_IFSOCK 0140000
00246 #define S_ISVTX 0001000
00247 #endif
00248 #if __BSD_VISIBLE
00249 #define S_IFWHT 0160000
00250 #endif
00251
00252 #define S_ISDIR(m) (((m) & 0170000) == 0040000)
00253 #define S_ISCHR(m) (((m) & 0170000) == 0020000)
00254 #define S_ISBLK(m) (((m) & 0170000) == 0060000)
00255 #define S_ISREG(m) (((m) & 0170000) == 0100000)
00256 #define S_ISFIFO(m) (((m) & 0170000) == 0010000)
00257 #if __POSIX_VISIBLE >= 200112
00258 #define S_ISLNK(m) (((m) & 0170000) == 0120000)
00259 #define S_ISSOCK(m) (((m) & 0170000) == 0140000)
00260 #endif
00261 #if __BSD_VISIBLE
00262 #define S_ISWHT(m) (((m) & 0170000) == 0160000)
00263 #endif
00264
00265 #if __BSD_VISIBLE
00266 #define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
00267
00268 #define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
00269
00270 #ifndef DEFFILEMODE
00271 #define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
00272 #endif//DEFFILEMODE
00273
00274 #define S_BLKSIZE 512
00275
00276
00277
00278
00279
00280
00281 #define UF_SETTABLE 0x0000ffff
00282 #define UF_NODUMP 0x00000001
00283 #define UF_IMMUTABLE 0x00000002
00284 #define UF_APPEND 0x00000004
00285 #define UF_OPAQUE 0x00000008
00286 #define UF_NOUNLINK 0x00000010
00287
00288
00289
00290 #define SF_SETTABLE 0xffff0000
00291 #define SF_ARCHIVED 0x00010000
00292 #define SF_IMMUTABLE 0x00020000
00293 #define SF_APPEND 0x00040000
00294 #define SF_NOUNLINK 0x00100000
00295 #define SF_SNAPSHOT 0x00200000
00296
00297 #ifdef _KERNEL
00298
00299
00300
00301 #define OPAQUE (UF_OPAQUE)
00302 #define APPEND (UF_APPEND | SF_APPEND)
00303 #define IMMUTABLE (UF_IMMUTABLE | SF_IMMUTABLE)
00304 #define NOUNLINK (UF_NOUNLINK | SF_NOUNLINK)
00305 #endif
00306
00307 #endif
00308
00309 #ifndef _KERNEL
00310 __BEGIN_DECLS
00311 IMPORT_C
00312 int chmod(const char *, mode_t);
00313 #if __BSD_VISIBLE
00314 IMPORT_C
00315 int fchmod(int, mode_t);
00316 #endif
00317 IMPORT_C int fstat(int, struct stat *);
00318 #if __POSIX_VISIBLE >= 200112
00319 IMPORT_C int lstat(const char * __restrict, struct stat * __restrict);
00320 #endif
00321 IMPORT_C int __xstat(int vers, const char *file, struct stat *buf);
00322 IMPORT_C int __lxstat (int version, const char *file, struct stat *buf);
00323 IMPORT_C int mkdir(const char *, mode_t);
00324 IMPORT_C int mkfifo(const char *, mode_t);
00325 IMPORT_C int stat(const char * __restrict, struct stat * __restrict);
00326 IMPORT_C mode_t umask(mode_t);
00327 __END_DECLS
00328 #endif
00329
00330 #endif