Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


stat.h
001: /* Copyright (C) 1999-2003,2009,2010 Free Software Foundation, Inc.
002:    This file is part of the GNU C Library.
003: 
004:    The GNU C Library is free software; you can redistribute it and/or
005:    modify it under the terms of the GNU Lesser General Public
006:    License as published by the Free Software Foundation; either
007:    version 2.1 of the License, or (at your option) any later version.
008: 
009:    The GNU C Library is distributed in the hope that it will be useful,
010:    but WITHOUT ANY WARRANTY; without even the implied warranty of
011:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
012:    Lesser General Public License for more details.
013: 
014:    You should have received a copy of the GNU Lesser General Public
015:    License along with the GNU C Library; if not, write to the Free
016:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
017:    02111-1307 USA.  */
018: 
019: #if !defined _SYS_STAT_H && !defined _FCNTL_H
020: # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
021: #endif
022: 
023: #ifndef _BITS_STAT_H
024: #define _BITS_STAT_H    1
025: 
026: /* Versions of the `struct stat' data structure.  */
027: #define _STAT_VER_KERNEL        0
028: 
029: #if __WORDSIZE == 32
030: # define _STAT_VER_SVR4         2
031: # define _STAT_VER_LINUX        3
032: 
033: /* i386 versions of the `xmknod' interface.  */
034: # define _MKNOD_VER_LINUX       1
035: # define _MKNOD_VER_SVR4        2
036: # define _MKNOD_VER             _MKNOD_VER_LINUX /* The bits defined below.  */
037: #else
038: # define _STAT_VER_LINUX        1
039: 
040: /* x86-64 versions of the `xmknod' interface.  */
041: # define _MKNOD_VER_LINUX       0
042: #endif
043: 
044: #define _STAT_VER               _STAT_VER_LINUX
045: 
046: struct stat
047:   {
048:     __dev_t st_dev;             /* Device.  */
049: #if __WORDSIZE == 32
050:     unsigned short int __pad1;
051: #endif
052: #if __WORDSIZE == 64 || !defined __USE_FILE_OFFSET64
053:     __ino_t st_ino;             /* File serial number.  */
054: #else
055:     __ino_t __st_ino;                   /* 32bit file serial number.    */
056: #endif
057: #if __WORDSIZE == 32
058:     __mode_t st_mode;                   /* File mode.  */
059:     __nlink_t st_nlink;                 /* Link count.  */
060: #else
061:     __nlink_t st_nlink;         /* Link count.  */
062:     __mode_t st_mode;           /* File mode.  */
063: #endif
064:     __uid_t st_uid;             /* User ID of the file's owner. */
065:     __gid_t st_gid;             /* Group ID of the file's group.*/
066: #if __WORDSIZE == 64
067:     int __pad0;
068: #endif
069:     __dev_t st_rdev;            /* Device number, if device.  */
070: #if __WORDSIZE == 32
071:     unsigned short int __pad2;
072: #endif
073: #if __WORDSIZE == 64 || !defined __USE_FILE_OFFSET64
074:     __off_t st_size;                    /* Size of file, in bytes.  */
075: #else
076:     __off64_t st_size;                  /* Size of file, in bytes.  */
077: #endif
078:     __blksize_t st_blksize;     /* Optimal block size for I/O.  */
079: #if __WORDSIZE == 64 || !defined __USE_FILE_OFFSET64
080:     __blkcnt_t st_blocks;               /* Number 512-byte blocks allocated. */
081: #else
082:     __blkcnt64_t st_blocks;             /* Number 512-byte blocks allocated. */
083: #endif
084: #if defined __USE_MISC || defined __USE_XOPEN2K8
085:     /* Nanosecond resolution timestamps are stored in a format
086:        equivalent to 'struct timespec'.  This is the type used
087:        whenever possible but the Unix namespace rules do not allow the
088:        identifier 'timespec' to appear in the <sys/stat.h> header.
089:        Therefore we have to handle the use of this header in strictly
090:        standard-compliant sources special.  */
091:     struct timespec st_atim;            /* Time of last access.  */
092:     struct timespec st_mtim;            /* Time of last modification.  */
093:     struct timespec st_ctim;            /* Time of last status change.  */
094: # define st_atime st_atim.tv_sec        /* Backward compatibility.  */
095: # define st_mtime st_mtim.tv_sec
096: # define st_ctime st_ctim.tv_sec
097: #else
098:     __time_t st_atime;                  /* Time of last access.  */
099:     unsigned long int st_atimensec;     /* Nscecs of last access.  */
100:     __time_t st_mtime;                  /* Time of last modification.  */
101:     unsigned long int st_mtimensec;     /* Nsecs of last modification.  */
102:     __time_t st_ctime;                  /* Time of last status change.  */
103:     unsigned long int st_ctimensec;     /* Nsecs of last status change.  */
104: #endif
105: #if __WORDSIZE == 64
106:     long int __unused[3];
107: #else
108: # ifndef __USE_FILE_OFFSET64
109:     unsigned long int __unused4;
110:     unsigned long int __unused5;
111: # else
112:     __ino64_t st_ino;                   /* File serial number.  */
113: # endif
114: #endif
115:   };
116: 
117: #ifdef __USE_LARGEFILE64
118: /* Note stat64 has the same shape as stat for x86-64.  */
119: struct stat64
120:   {
121:     __dev_t st_dev;             /* Device.  */
122: # if __WORDSIZE == 64
123:     __ino64_t st_ino;           /* File serial number.  */
124:     __nlink_t st_nlink;         /* Link count.  */
125:     __mode_t st_mode;           /* File mode.  */
126: # else
127:     unsigned int __pad1;
128:     __ino_t __st_ino;                   /* 32bit file serial number.    */
129:     __mode_t st_mode;                   /* File mode.  */
130:     __nlink_t st_nlink;                 /* Link count.  */
131: # endif
132:     __uid_t st_uid;             /* User ID of the file's owner. */
133:     __gid_t st_gid;             /* Group ID of the file's group.*/
134: # if __WORDSIZE == 64
135:     int __pad0;
136:     __dev_t st_rdev;            /* Device number, if device.  */
137:     __off_t st_size;            /* Size of file, in bytes.  */
138: # else
139:     __dev_t st_rdev;                    /* Device number, if device.  */
140:     unsigned int __pad2;
141:     __off64_t st_size;                  /* Size of file, in bytes.  */
142: # endif
143:     __blksize_t st_blksize;     /* Optimal block size for I/O.  */
144:     __blkcnt64_t st_blocks;     /* Nr. 512-byte blocks allocated.  */
145: # if defined __USE_MISC || defined __USE_XOPEN2K8
146:     /* Nanosecond resolution timestamps are stored in a format
147:        equivalent to 'struct timespec'.  This is the type used
148:        whenever possible but the Unix namespace rules do not allow the
149:        identifier 'timespec' to appear in the <sys/stat.h> header.
150:        Therefore we have to handle the use of this header in strictly
151:        standard-compliant sources special.  */
152:     struct timespec st_atim;            /* Time of last access.  */
153:     struct timespec st_mtim;            /* Time of last modification.  */
154:     struct timespec st_ctim;            /* Time of last status change.  */
155: #  define st_atime st_atim.tv_sec       /* Backward compatibility.  */
156: #  define st_mtime st_mtim.tv_sec
157: #  define st_ctime st_ctim.tv_sec
158: # else
159:     __time_t st_atime;                  /* Time of last access.  */
160:     unsigned long int st_atimensec;     /* Nscecs of last access.  */
161:     __time_t st_mtime;                  /* Time of last modification.  */
162:     unsigned long int st_mtimensec;     /* Nsecs of last modification.  */
163:     __time_t st_ctime;                  /* Time of last status change.  */
164:     unsigned long int st_ctimensec;     /* Nsecs of last status change.  */
165: # endif
166: # if __WORDSIZE == 64
167:     long int __unused[3];
168: # else
169:     __ino64_t st_ino;                   /* File serial number.          */
170: # endif
171:   };
172: #endif
173: 
174: /* Tell code we have these members.  */
175: #define _STATBUF_ST_BLKSIZE
176: #define _STATBUF_ST_RDEV
177: /* Nanosecond resolution time values are supported.  */
178: #define _STATBUF_ST_NSEC
179: 
180: /* Encoding of the file mode.  */
181: 
182: #define __S_IFMT        0170000 /* These bits determine file type.  */
183: 
184: /* File types.  */
185: #define __S_IFDIR       0040000 /* Directory.  */
186: #define __S_IFCHR       0020000 /* Character device.  */
187: #define __S_IFBLK       0060000 /* Block device.  */
188: #define __S_IFREG       0100000 /* Regular file.  */
189: #define __S_IFIFO       0010000 /* FIFO.  */
190: #define __S_IFLNK       0120000 /* Symbolic link.  */
191: #define __S_IFSOCK      0140000 /* Socket.  */
192: 
193: /* POSIX.1b objects.  Note that these macros always evaluate to zero.  But
194:    they do it by enforcing the correct use of the macros.  */
195: #define __S_TYPEISMQ(buf)  ((buf)->st_mode - (buf)->st_mode)
196: #define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
197: #define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
198: 
199: /* Protection bits.  */
200: 
201: #define __S_ISUID       04000   /* Set user ID on execution.  */
202: #define __S_ISGID       02000   /* Set group ID on execution.  */
203: #define __S_ISVTX       01000   /* Save swapped text after use (sticky).  */
204: #define __S_IREAD       0400    /* Read by owner.  */
205: #define __S_IWRITE      0200    /* Write by owner.  */
206: #define __S_IEXEC       0100    /* Execute by owner.  */
207: 
208: #ifdef __USE_ATFILE
209: # define UTIME_NOW      ((1l << 30) - 1l)
210: # define UTIME_OMIT     ((1l << 30) - 2l)
211: #endif
212: 
213: #endif  /* bits/stat.h */
214: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/