home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c500 / 1.ddi / H_SYS.WPK / STAT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-28  |  2.0 KB  |  73 lines

  1. /*
  2.  *  sys/stat.h    Equates and prototype for fstat, stat functions
  3.  *
  4.  *  Copyright (C) by WATCOM Systems Inc. 1988-1992.  All rights reserved.
  5.  */
  6. #ifndef _STAT_H_INCLUDED
  7.  
  8. #ifndef __TYPES_H_INCLUDED
  9.  #include <sys/types.h>
  10. #endif
  11.  
  12. #pragma pack(1);
  13.  
  14. struct stat {
  15.     dev_t    st_dev;     /* disk drive file resides on */
  16.     ino_t    st_ino;     /* this inode's #, not used for DOS */
  17.     unsigned short st_mode; /* file mode */
  18.     short    st_nlink;    /* # of hard links */
  19.     short    st_uid;     /* user-id, always 'root' */
  20.     short    st_gid;     /* group-id, always 'root' */
  21.     dev_t    st_rdev;    /* should be device type */
  22.                 /* but same as st_dev for the time being */
  23.     off_t    st_size;    /* total file size */
  24.     time_t    st_atime;    /* should be file last access time */
  25.     time_t    st_mtime;    /* file last modify time */
  26.     time_t    st_ctime;    /* should be file last status change time */
  27. };
  28.  
  29. #define S_IFMT        0170000 /* type of file */
  30. #define S_IFDIR     0040000 /* directory */
  31. #define S_IFCHR     0020000 /* character special file */
  32. #define S_IFREG     0100000 /* regular */
  33.  
  34. #define S_ISDIR( m )    (((m) & S_IFMT) == S_IFDIR)
  35. #define S_ISCHR( m )    (((m) & S_IFMT) == S_IFCHR)
  36. #define S_ISREG( m )    (((m) & S_IFMT) == S_IFREG)
  37. /* the following two are not possible on PC */
  38. #define S_ISBLK( m )    0
  39. #define S_ISFIFO( m )    0
  40.  
  41. /* owner permission */
  42. #define S_IRWXU     0000700
  43. #define S_IRUSR     0000400
  44. #define S_IWUSR     0000200
  45. #define S_IXUSR     0000100
  46. #define S_IREAD     0000400
  47. #define S_IWRITE    0000200
  48. #define S_IEXEC     0000100
  49.  
  50. /* group permission.  same as owner's on PC */
  51. #define S_IRWXG     0000070
  52. #define S_IRGRP     0000040
  53. #define S_IWGRP     0000020
  54. #define S_IXGRP     0000010
  55.  
  56. /* other permission.  same as owner's on PC */
  57. #define S_IRWXO     0000007
  58. #define S_IROTH     0000004
  59. #define S_IWOTH     0000002
  60. #define S_IXOTH     0000001
  61.  
  62. /* setuid, setgid, and sticky.    always false on PC */
  63. #define S_ISUID     0004000
  64. #define S_ISGID     0002000
  65. #define S_ISVTX     0001000
  66.  
  67. int fstat(int, struct stat *);
  68. int stat(const char *, struct stat *);
  69.  
  70. #pragma pack();
  71. #define _STAT_H_INCLUDED
  72. #endif
  73.