home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c496 / 1.img / H_SYS.WPK / STAT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1991-08-20  |  2.0 KB  |  72 lines

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