home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 January / PCWorld_2000-01_cd.bin / Software / Servis / Devc / _SETUP.5 / Group8 / stat.h < prev    next >
C/C++ Source or Header  |  1998-12-24  |  3KB  |  140 lines

  1. /*
  2.  * stat.h
  3.  *
  4.  * Symbolic constants for opening and creating files, also stat, fstat and
  5.  * chmod functions.
  6.  *
  7.  * This file is part of the Mingw32 package.
  8.  *
  9.  * Contributors:
  10.  *  Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  11.  *
  12.  *  THIS SOFTWARE IS NOT COPYRIGHTED
  13.  *
  14.  *  This source code is offered for use in the public domain. You may
  15.  *  use, modify or distribute it freely.
  16.  *
  17.  *  This code is distributed in the hope that it will be useful but
  18.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  19.  *  DISCLAMED. This includes but is not limited to warranties of
  20.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  21.  *
  22.  * $Revision: 2.3 $
  23.  * $Author: colin $
  24.  * $Date: 1998/05/12 22:20:25 $
  25.  *
  26.  */
  27.  
  28. #ifndef __STRICT_ANSI__
  29.  
  30. #ifndef _STAT_H_
  31. #define _STAT_H_
  32.  
  33. #include <sys/types.h>
  34.  
  35. /*
  36.  * Constants for the stat st_mode member.
  37.  */
  38. #define    _S_IFIFO    0x1000    /* FIFO */
  39. #define    _S_IFCHR    0x2000    /* Character */
  40. #define    _S_IFBLK    0x3000    /* Block */
  41. #define    _S_IFDIR    0x4000    /* Directory */
  42. #define    _S_IFREG    0x8000    /* Regular */
  43.  
  44. #define    _S_IFMT        0xF000    /* File type mask */
  45.  
  46. #define    _S_IEXEC    0x0040
  47. #define    _S_IWRITE    0x0080
  48. #define    _S_IREAD    0x0100
  49.  
  50. #define    _S_IRWXU    (_S_IREAD | _S_IWRITE | _S_IEXEC)
  51. #define    _S_IXUSR    _S_IEXEC
  52. #define    _S_IWUSR    _S_IWRITE
  53. #define    _S_IRUSR    _S_IREAD
  54.  
  55. #define    _S_ISDIR(m)    ((m) & _S_IFDIR)
  56. #define    _S_ISFIFO(m)    ((m) & _S_IFIFO)
  57. #define    _S_ISCHR(m)    ((m) & _S_IFCHR)
  58. #define    _S_ISBLK(m)    ((m) & _S_IFBLK)
  59. #define    _S_ISREG(m)    ((m) & _S_IFREG)
  60.  
  61. #ifndef _NO_OLDNAMES
  62.  
  63. #define    S_IFIFO        _S_IFIFO
  64. #define    S_IFCHR        _S_IFCHR
  65. #define    S_IFBLK        _S_IFBLK
  66. #define    S_IFDIR        _S_IFDIR
  67. #define    S_IFREG        _S_IFREG
  68. #define    S_IFMT        _S_IFMT
  69. #define    S_IEXEC        _S_IEXEC
  70. #define    S_IWRITE    _S_IWRITE
  71. #define    S_IREAD        _S_IREAD
  72. #define    S_IRWXU        _S_IRWXU
  73. #define    S_IXUSR        _S_IXUSR
  74. #define    S_IWUSR        _S_IWUSR
  75. #define    S_IRUSR        _S_IRUSR
  76.  
  77. #define    S_ISDIR(m)    ((m) & S_IFDIR)
  78. #define    S_ISFIFO(m)    ((m) & S_IFIFO)
  79. #define    S_ISCHR(m)    ((m) & S_IFCHR)
  80. #define    S_ISBLK(m)    ((m) & S_IFBLK)
  81. #define    S_ISREG(m)    ((m) & S_IFREG)
  82.  
  83. #endif    /* Not _NO_OLDNAMES */
  84.  
  85. #ifndef RC_INVOKED
  86.  
  87. /*
  88.  * The structure manipulated and returned by stat and fstat.
  89.  *
  90.  * NOTE: If called on a directory the values in the time fields are not only
  91.  * invalid, they will cause localtime et. al. to return NULL. And calling
  92.  * asctime with a NULL pointer causes an Invalid Page Fault. So watch it!
  93.  */
  94. struct stat
  95. {
  96.     _dev_t    st_dev;        /* Equivalent to drive number 0=A 1=B ... */
  97.     _ino_t    st_ino;        /* Always zero ? */
  98.     _mode_t    st_mode;    /* See above constants */
  99.     short    st_nlink;    /* Number of links. */
  100.     int    st_uid;        /* User: Maybe significant on NT ? */
  101.     short    st_gid;        /* Group: Ditto */
  102.     _dev_t    st_rdev;    /* Seems useless (not even filled in) */
  103.     long    st_size;    /* File size in bytes */
  104.     time_t    st_atime;    /* Accessed date (always 00:00 hrs local
  105.                  * on FAT) */
  106.     time_t    st_mtime;    /* Modified time */
  107.     time_t    st_ctime;    /* Creation time */
  108. };
  109.  
  110.  
  111. #ifdef    __cplusplus
  112. extern "C" {
  113. #endif
  114.  
  115. int    _fstat (int nHandle, struct stat* pstat);
  116. int    _chmod (const char* szPath, int nMode);
  117. int    _stat (const char* szPath, struct stat* pstat);
  118.  
  119.  
  120. #ifndef    _NO_OLDNAMES
  121.  
  122. /* These functions live in liboldnames.a. */
  123. int    fstat (int nHandle, struct stat* pstat);
  124. int    chmod (const char* szPath, int nMode);
  125. int    stat (const char* szPath, struct stat* pstat);
  126.  
  127. #endif    /* Not _NO_OLDNAMES */
  128.  
  129.  
  130. #ifdef    __cplusplus
  131. }
  132. #endif
  133.  
  134. #endif    /* Not RC_INVOKED */
  135.  
  136. #endif    /* Not _STAT_H_ */
  137.  
  138. #endif    /* Not __STRICT_ANSI__ */
  139.  
  140.