
1: /* Copyright (C) 1992, 1996, 1997, 2000 Free Software Foundation, Inc. 2: This file is part of the GNU C Library. 3: 4: The GNU C Library is free software; you can redistribute it and/or 5: modify it under the terms of the GNU Lesser General Public 6: License as published by the Free Software Foundation; either 7: version 2.1 of the License, or (at your option) any later version. 8: 9: The GNU C Library is distributed in the hope that it will be useful, 10: but WITHOUT ANY WARRANTY; without even the implied warranty of 11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12: Lesser General Public License for more details. 13: 14: You should have received a copy of the GNU Lesser General Public 15: License along with the GNU C Library; if not, write to the Free 16: Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 17: 02111-1307 USA. */ 18: 19: #ifndef _SYS_STAT_H 20: # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead." 21: #endif 22: 23: /* This structure needs to be defined in accordance with the 24: implementation of __stat, __fstat, and __lstat. */ 25: 26: #include <bits/types.h> 27: 28: /* Structure describing file characteristics. */ 29: struct stat 30: { 31: /* These are the members that POSIX.1 requires. */ 32: 33: __mode_t st_mode; /* File mode. */ 34: #ifndef __USE_FILE_OFFSET64 35: __ino_t st_ino; /* File serial number. */ 36: #else 37: __ino64_t st_ino; /* File serial number. */ 38: #endif 39: __dev_t st_dev; /* Device containing the file. */ 40: __nlink_t st_nlink; /* Link count. */ 41: 42: __uid_t st_uid; /* User ID of the file's owner. */ 43: __gid_t st_gid; /* Group ID of the file's group. */ 44: #ifndef __USE_FILE_OFFSET64 45: __off_t st_size; /* Size of file, in bytes. */ 46: #else 47: __off64_t st_size; /* Size of file, in bytes. */ 48: #endif 49: 50: __time_t st_atime; /* Time of last access. */ 51: __time_t st_mtime; /* Time of last modification. */ 52: __time_t st_ctime; /* Time of last status change. */ 53: 54: /* This should be defined if there is a `st_blksize' member. */ 55: #undef _STATBUF_ST_BLKSIZE 56: }; 57: 58: /* Encoding of the file mode. These are the standard Unix values, 59: but POSIX.1 does not specify what values should be used. */ 60: 61: #define __S_IFMT 0170000 /* These bits determine file type. */ 62: 63: /* File types. */ 64: #define __S_IFDIR 0040000 /* Directory. */ 65: #define __S_IFCHR 0020000 /* Character device. */ 66: #define __S_IFBLK 0060000 /* Block device. */ 67: #define __S_IFREG 0100000 /* Regular file. */ 68: #define __S_IFIFO 0010000 /* FIFO. */ 69: 70: /* POSIX.1b objects. */ 71: #define __S_TYPEISMQ(buf) 0 72: #define __S_TYPEISSEM(buf) 0 73: #define __S_TYPEISSHM(buf) 0 74: 75: /* Protection bits. */ 76: 77: #define __S_ISUID 04000 /* Set user ID on execution. */ 78: #define __S_ISGID 02000 /* Set group ID on execution. */ 79: #define __S_IREAD 0400 /* Read by owner. */ 80: #define __S_IWRITE 0200 /* Write by owner. */ 81: #define __S_IEXEC 0100 /* Execute by owner. */ 82: 83: #ifdef __USE_LARGEFILE64 84: struct stat64 85: { 86: __mode_t st_mode; /* File mode. */ 87: __ino64_t st_ino; /* File serial number. */ 88: __dev_t st_dev; /* Device. */ 89: __nlink_t st_nlink; /* Link count. */ 90: 91: __uid_t st_uid; /* User ID of the file's owner. */ 92: __gid_t st_gid; /* Group ID of the file's group.*/ 93: __off64_t st_size; /* Size of file, in bytes. */ 94: 95: __time_t st_atime; /* Time of last access. */ 96: __time_t st_mtime; /* Time of last modification. */ 97: __time_t st_ctime; /* Time of last status change. */ 98: }; 99: #endif