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 #ifndef _ABLE_CLIB_SYS_STAT_H
00031 #define _ABLE_CLIB_SYS_STAT_H 1
00032
00034 struct stat {
00035 dev_t st_dev;
00036 ino_t st_ino;
00037 mode_t st_mode;
00038 nlink_t st_nlink;
00039 uid_t st_uid;
00040 gid_t st_gid;
00041 dev_t st_rdev;
00042 off64_t st_size;
00043 long st_blksize;
00044 long st_blocks;
00045 time_t st_atime;
00046 time_t st_mtime;
00047 time_t st_ctime;
00048 };
00049
00052 extern int fstat (int fd, struct stat *buf);
00053
00056 extern int stat(const char *name, struct stat *st);
00057
00061 extern int lstat(const char *name, struct stat *st);
00062
00071 extern int mkdir(const char *pathname, mode_t mode);
00072
00073
00074 #define S_IFMT 0170000
00076
00077 #define S_IFCHR 0020000
00078 #define S_IFDIR 0040000
00079 #define S_IFBLK 0060000
00080 #define S_IFREG 0100000
00081 #define S_IFIFO 0010000
00082 #define S_IFLNK 0120000
00083 #define S_IFSOCK 0140000
00085 #define __S_ISTYPE(x,mask) (((x) & (S_IFMT)) == (mask))
00086
00088 #define S_ISDIR(mode) __S_ISTYPE((mode), S_IFDIR)
00089
00091 #define S_ISLNK(mode) __S_ISTYPE((mode), S_IFLNK)
00092
00094 #define S_ISREG(mode) __S_ISTYPE((mode), S_IFREG)
00095
00097 #define S_ISCHR(mode) __S_ISTYPE((mode), S_IFCHR)
00098
00100 #define S_ISBLK(mode) __S_ISTYPE((mode), S_IFBLK)
00101
00103 #define S_ISFIFO(mode) __S_ISTYPE((mode), S_IFIFO)
00104
00106 #define S_ISSOCK(mode) __S_ISTYPE((mode), S_IFSOCK)
00107
00108
00109
00110 #define S_ISVTX 01000
00111 #define S_ISGID 02000
00112 #define S_ISUID 04000
00114 #define S_IEXEC 0100
00115 #define S_IWRITE 0200
00116 #define S_IREAD 0400
00118 #define S_IRUSR S_IREAD
00119 #define S_IWUSR S_IWRITE
00120 #define S_IXUSR S_IEXEC
00123 #define S_IRWXU (S_IREAD | S_IWRITE | S_IEXEC)
00124
00125 #define S_IRGRP (S_IRUSR >> 3)
00126 #define S_IWGRP (S_IWUSR >> 3)
00127 #define S_IXGRP (S_IXUSR >> 3)
00129 #define S_IRWXG (S_IRWXU >> 3)
00131 #define S_IROTH (S_IRGRP >> 3)
00132 #define S_IWOTH (S_IWGRP >> 3)
00133 #define S_IXOTH (S_IXGRP >> 3)
00135 #define S_IRWXO (S_IRWXG >> 3)
00137 #endif