home *** CD-ROM | disk | FTP | other *** search
/ OpenStep (Enterprise) / OpenStepENTCD.toast / OEDEV / DEV.Z / STAT.H < prev    next >
C/C++ Source or Header  |  1996-09-08  |  5KB  |  239 lines

  1. #if !defined(__TOPLEVEL_NEXT_COMMON_INCLUDE__)
  2. #define __TOPLEVEL_NEXT_COMMON_INCLUDE__
  3. #define __TOPLEVEL_STAT_H_ 
  4. #include <next_common_defines.h>
  5. #endif /* __TOPLEVEL_NEXT_COMMON_INCLUDE__ */
  6.  
  7. /***
  8. *sys/stat.h - defines structure used by stat() and fstat()
  9. *
  10. *    Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
  11. *
  12. *Purpose:
  13. *    This file defines the structure used by the _stat() and _fstat()
  14. *    routines.
  15. *    [System V]
  16. *
  17. *       [Public]
  18. *
  19. ****/
  20.  
  21. #if _MSC_VER > 1000
  22. #pragma once
  23. #endif
  24.  
  25. #ifndef _INC_STAT
  26. #define _INC_STAT
  27.  
  28. #if !defined(_WIN32) && !defined(_MAC)
  29. #error ERROR: Only Mac or Win32 targets supported!
  30. #endif
  31.  
  32.  
  33. #ifdef    _MSC_VER
  34. #pragma pack(push,8)
  35. #endif    /* _MSC_VER */
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41.  
  42. /* Define _CRTAPI1 (for compatibility with the NT SDK) */
  43.  
  44. #ifndef _CRTAPI1
  45. #if    _MSC_VER >= 800 && _M_IX86 >= 300
  46. #define _CRTAPI1 __cdecl
  47. #else
  48. #define _CRTAPI1
  49. #endif
  50. #endif
  51.  
  52.  
  53. /* Define _CRTAPI2 (for compatibility with the NT SDK) */
  54.  
  55. #ifndef _CRTAPI2
  56. #if    _MSC_VER >= 800 && _M_IX86 >= 300
  57. #define _CRTAPI2 __cdecl
  58. #else
  59. #define _CRTAPI2
  60. #endif
  61. #endif
  62.  
  63.  
  64. /* Define _CRTIMP */
  65.  
  66. #ifndef _CRTIMP
  67. #ifdef    _NTSDK
  68. /* definition compatible with NT SDK */
  69. #define _CRTIMP
  70. #else    /* ndef _NTSDK */
  71. /* current definition */
  72. #ifdef    _DLL
  73. #define _CRTIMP __declspec(dllimport)
  74. #else    /* ndef _DLL */
  75. #define _CRTIMP
  76. #endif    /* _DLL */
  77. #endif    /* _NTSDK */
  78. #endif    /* _CRTIMP */
  79.  
  80.  
  81. /* Define __cdecl for non-Microsoft compilers */
  82.  
  83. #if    ( !defined(_MSC_VER) && !defined(__cdecl) )
  84. #define __cdecl
  85. #endif
  86.  
  87.  
  88. #include <sys/types.h>
  89.  
  90.  
  91. #ifndef _TIME_T_DEFINED
  92. typedef long time_t;
  93. #define _TIME_T_DEFINED
  94. #endif
  95.  
  96.  
  97. #ifdef _WIN32
  98. #ifndef _WCHAR_T_DEFINED
  99. typedef unsigned short wchar_t;
  100. #define _WCHAR_T_DEFINED
  101. #endif
  102. #endif /* _WIN32 */
  103.  
  104.  
  105. /* define structure for returning status information */
  106.  
  107. #ifndef _STAT_DEFINED
  108.  
  109. struct _stat {
  110.     _dev_t st_dev;
  111.     _ino_t st_ino;
  112.     unsigned short st_mode;
  113.     short st_nlink;
  114.     short st_uid;
  115.     short st_gid;
  116.     _dev_t st_rdev;
  117.     _off_t st_size;
  118.     time_t st_atime;
  119.     time_t st_mtime;
  120.     time_t st_ctime;
  121.     };
  122.  
  123. #if    !__STDC__ && !defined(_NTSDK) && !defined(__GNUC__)
  124.  
  125. /* Non-ANSI names for compatibility */
  126.  
  127. struct stat {
  128.     _dev_t st_dev;
  129.     _ino_t st_ino;
  130.     unsigned short st_mode;
  131.     short st_nlink;
  132.     short st_uid;
  133.     short st_gid;
  134.     _dev_t st_rdev;
  135.     _off_t st_size;
  136.     time_t st_atime;
  137.     time_t st_mtime;
  138.     time_t st_ctime;
  139.     };
  140.  
  141. #endif    /* __STDC__ */
  142.  
  143. #if    _INTEGRAL_MAX_BITS >= 64
  144. struct _stati64 {
  145.     _dev_t st_dev;
  146.     _ino_t st_ino;
  147.     unsigned short st_mode;
  148.     short st_nlink;
  149.     short st_uid;
  150.     short st_gid;
  151.     _dev_t st_rdev;
  152.     __int64 st_size;
  153.     time_t st_atime;
  154.     time_t st_mtime;
  155.     time_t st_ctime;
  156.     };
  157. #endif
  158.  
  159. #define _STAT_DEFINED
  160. #endif
  161.  
  162.  
  163. #define _S_IFMT     0170000     /* file type mask */
  164. #define _S_IFDIR    0040000     /* directory */
  165. #define _S_IFCHR    0020000     /* character special */
  166. #define _S_IFIFO    0010000     /* pipe */
  167. #define _S_IFREG    0100000     /* regular */
  168. #define _S_IREAD    0000400     /* read permission, owner */
  169. #define _S_IWRITE    0000200     /* write permission, owner */
  170. #define _S_IEXEC    0000100     /* execute/search permission, owner */
  171.  
  172.  
  173. /* Function prototypes */
  174.  
  175. _CRTIMP int __cdecl _fstat(int, struct _stat *);
  176. _CRTIMP int __cdecl _stat(const char *, struct _stat *);
  177.  
  178. #if    _INTEGRAL_MAX_BITS >= 64
  179. _CRTIMP int __cdecl _fstati64(int, struct _stati64 *);
  180. _CRTIMP int __cdecl _stati64(const char *, struct _stati64 *);
  181. #endif
  182.  
  183. #ifdef _WIN32
  184. #ifndef _WSTAT_DEFINED
  185.  
  186. /* wide function prototypes, also declared in wchar.h  */
  187.  
  188. _CRTIMP int __cdecl _wstat(const wchar_t *, struct _stat *);
  189.  
  190. #if    _INTEGRAL_MAX_BITS >= 64
  191. _CRTIMP int __cdecl _wstati64(const wchar_t *, struct _stati64 *);
  192. #endif
  193.  
  194. #define _WSTAT_DEFINED
  195. #endif
  196. #endif /* _WIN32 */
  197.  
  198.  
  199. #if    !__STDC__
  200.  
  201. /* Non-ANSI names for compatibility */
  202.  
  203. #define S_IFMT     _S_IFMT
  204. #define S_IFDIR  _S_IFDIR
  205. #define S_IFCHR  _S_IFCHR
  206. #define S_IFREG  _S_IFREG
  207. #define S_IREAD  _S_IREAD
  208. #define S_IWRITE _S_IWRITE
  209. #define S_IEXEC  _S_IEXEC
  210.  
  211. #if defined(_NTSDK) || defined(__GNUC__)
  212. /* definitions compatible with NT SDK */
  213. #define fstat     _fstat
  214. #define stat     _stat
  215. #else    /* ndef _NTSDK */
  216. /* current declarations */
  217. _CRTIMP int __cdecl fstat(int, struct stat *);
  218. _CRTIMP int __cdecl stat(const char *, struct stat *);
  219. #endif    /* _NTSDK */
  220.  
  221. #endif    /* __STDC__ */
  222.  
  223.  
  224. #ifdef __cplusplus
  225. }
  226. #endif
  227.  
  228. #if defined(_MSC_VER)
  229. #pragma pack(pop)
  230. #endif    /* _MSC_VER */
  231.  
  232. #endif    /* _INC_STAT */
  233.  
  234. #if defined(__TOPLEVEL_STAT_H_)
  235. #undef __TOPLEVEL_NEXT_COMMON_INCLUDE__
  236. #undef __TOPLEVEL_STAT_H_
  237. #include <next_common_undefines.h>
  238. #endif /* __TOPLEVEL_STAT_H_ */
  239.