home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / LIB / stat.lzh / STAT / stat.h < prev    next >
Text File  |  1993-04-26  |  3KB  |  100 lines

  1. /*
  2.     stat and fstat functions for OS/9
  3.     header file
  4.     by Richard W.M. Jones
  5. */
  6.  
  7. #ifndef __STAT__
  8. #define __STAT__
  9.  
  10. #ifndef ctime
  11. #include <time.h>
  12. #endif
  13.  
  14. /* strange types used by Convex unix */
  15.  
  16. typedef unsigned short    ushort_t;
  17. typedef unsigned long    ulong_t;
  18.  
  19. typedef ushort_t        nlink_t;
  20. typedef ulong_t            ino_t;
  21. typedef int                dev_t;
  22. typedef ushort_t        uid_t;
  23. typedef ushort_t        gid_t;
  24. typedef ushort_t        mode_t;
  25. typedef long            off_t;
  26.  
  27. /* struct stat as defined in Convex unix r8.1 */
  28.  
  29. struct stat {
  30.     dev_t    st_dev;                /* device on which inode resides */
  31.     ino_t    st_ino;                /* inode number */
  32.     mode_t    st_mode;            /* protection bits (extended+OS/9) */
  33.     nlink_t    st_nlink;            /* number of hard links to the file */
  34.     uid_t    st_uid;                /* user id of owner */
  35.     gid_t    st_gid;                /* group id of owner */
  36.     off_t    st_size;            /* total size of file */
  37.     time_t    st_atime;            /* last access time of file */
  38.     time_t    st_mtime;            /* last modify time of file */
  39.     time_t    st_ctime;            /* last change time of file */
  40. };
  41.  
  42. /* prototypes for stat, fstat */
  43.  
  44. int stat(), fstat();
  45.  
  46. /* ANSI prototypes
  47.  
  48. int stat(char *,struct stat *);
  49. int fstat(int,struct stat *);
  50. */
  51.  
  52. /* macros used to query st_mode */
  53.  
  54. #define S_ISDIR(n)    ( ((n)&S_IFMT) == S_IFDIR )
  55. #define S_ISCHR(n)    ( ((n)&S_IFMT) == S_IFCHR )
  56. #define S_ISBLK(n)    ( ((n)&S_IFMT) == S_IFBLK )
  57. #define S_ISREG(n)    ( ((n)&S_IFMT) == S_IFREG )
  58. #define S_ISFIFO(n)    ( ((n)&S_IFMT) == S_IFIFO )
  59.  
  60. /* masks for st_mode permissions; unix applications may fail if they
  61.     rely on the RWX bit order (the order is XWR in OS/9) */
  62.  
  63. #define S_IRWXU        00007
  64. #define S_IRWXG        00070
  65. #define S_IRWXO        00070
  66. #define S_ISUID        00000            /* no setuid in OS/9 */
  67. #define S_ISGID        00000            /* no setgid in OS/9 */
  68.  
  69. /* old masks for st_mode (ought to be replaced by macros above) */
  70.  
  71. #ifdef S_IFMT
  72. #undef S_IFMT
  73. #undef S_IFDIR
  74. #endif
  75.  
  76. #define S_IFMT        0x0F80
  77. #define S_IFDIR        0x0080
  78. #define S_IFIFO        0x0100            /* extended mode attribute */
  79. #define S_IFCHR        0x0200            /* extended mode attribute */
  80. #define S_IFBLK        0x0400            /* extended mode attribute */
  81. #define S_IFREG        0x0800            /* extended mode attribute */
  82. #define S_IFSOCK    0x1000            /* extended mode attribute */
  83. #define S_IFLNK        0xFFFF            /* no symbolic links in OS/9 */
  84. #define S_ISVTX        0x0000            /* no sticky bit in OS/9 */
  85. #define S_IFNOSHAR    0x0040            /* not sharable (special OS/9 bit) */
  86.  
  87. /* these are probably Convex extensions, but they're included anyway */
  88.  
  89. #define S_IRUSR        S_IREAD            /* user permissions */
  90. #define S_IWUSR        S_IWRITE
  91. #define S_IXUSR        S_IEXEC
  92. #define S_IRGRP        (S_IREAD<<3)    /* group and world permissions */
  93. #define S_IWGRP        (S_IWRITE<<3)
  94. #define S_IXGRP        (S_IEXEC<<3)
  95. #define S_IROTH        S_IRGRP
  96. #define S_IWOTH        S_IWGRP
  97. #define S_IXOTH        S_IXGRP
  98.  
  99. #endif /* __STAT__ */
  100.