stat.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #ifndef __STAT_H
  2. #define __STAT_H
  3. #ifndef __TYPES_H
  4. #include <sys/types.h>
  5. #endif
  6. #pragma lib "/$M/lib/ape/libap.a"
  7. /*
  8. * stat structure, used by stat(2) and fstat(2)
  9. */
  10. struct stat {
  11. dev_t st_dev;
  12. ino_t st_ino;
  13. mode_t st_mode;
  14. nlink_t st_nlink;
  15. uid_t st_uid;
  16. gid_t st_gid;
  17. off_t st_size;
  18. time_t st_atime;
  19. time_t st_mtime;
  20. time_t st_ctime;
  21. };
  22. #define S__MASK 0170000
  23. #ifdef _RESEARCH_SOURCE
  24. #define S_ISLNK(m) (((m)&S__MASK) == 0120000)
  25. #endif
  26. #define S_ISREG(m) (((m)&S__MASK) == 0100000)
  27. #define S_ISDIR(m) (((m)&S__MASK) == 0040000)
  28. #define S_ISCHR(m) (((m)&S__MASK) == 0020000)
  29. #define S_ISBLK(m) (((m)&S__MASK) == 0060000)
  30. #define S_ISFIFO(m) (((m)&S__MASK) == 0010000)
  31. #define S_ISUID 04000 /* set user id on execution */
  32. #define S_ISGID 02000 /* set group id on execution */
  33. #define S_IRWXU 00700 /* read, write, execute: owner */
  34. #define S_IRUSR 00400 /* read permission: owner */
  35. #define S_IWUSR 00200 /* write permission: owner */
  36. #define S_IXUSR 00100 /* execute permission: owner */
  37. #define S_IRWXG 00070 /* read, write, execute: group */
  38. #define S_IRGRP 00040 /* read permission: group */
  39. #define S_IWGRP 00020 /* write permission: group */
  40. #define S_IXGRP 00010 /* execute permission: group */
  41. #define S_IRWXO 00007 /* read, write, execute: other */
  42. #define S_IROTH 00004 /* read permission: other */
  43. #define S_IWOTH 00002 /* write permission: other */
  44. #define S_IXOTH 00001 /* execute permission: other */
  45. #ifdef _BSD_EXTENSION
  46. #define S_IFMT S__MASK
  47. #define S_IFDIR 0040000
  48. #define S_IFCHR 0020000
  49. #define S_IFBLK 0060000
  50. #define S_IFREG 0100000
  51. #define S_IFIFO 0010000
  52. #define S_IFLNK 0120000
  53. #define S_IFSOCK S_IFIFO
  54. #endif
  55. #ifdef __cplusplus
  56. extern "C" {
  57. #endif
  58. extern mode_t umask(mode_t);
  59. extern int mkdir(const char *, mode_t);
  60. extern int mkfifo(const char *, mode_t);
  61. extern int stat(const char *, struct stat *);
  62. extern int fstat(int, struct stat *);
  63. extern int chmod(const char *, mode_t);
  64. #ifdef _BSD_EXTENSION
  65. #pragma lib "/$M/lib/ape/libbsd.a"
  66. extern int lstat(char *, struct stat *);
  67. extern int symlink(char *, char *);
  68. extern int readlink(char *, char*, int);
  69. #endif
  70. #ifdef __cplusplus
  71. }
  72. #endif
  73. #endif