]>
Commit | Line | Data |
---|---|---|
2aa62f2b | 1 | /** @file\r |
2 | \r | |
53e1e5c6 | 3 | Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r |
2aa62f2b | 4 | This program and the accompanying materials are licensed and made\r |
5 | available under the terms and conditions of the BSD License that\r | |
6 | accompanies this distribution. The full text of the license may be found at\r | |
7 | http://opensource.org/licenses/bsd-license.php.\r | |
8 | \r | |
9 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
10 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
11 | \r | |
12 | Copyright (c) 1982, 1986, 1989, 1993\r | |
13 | The Regents of the University of California. All rights reserved.\r | |
14 | (c) UNIX System Laboratories, Inc.\r | |
15 | All or some portions of this file are derived from material licensed\r | |
16 | to the University of California by American Telephone and Telegraph\r | |
17 | Co. or Unix System Laboratories, Inc. and are reproduced herein with\r | |
18 | the permission of UNIX System Laboratories, Inc.\r | |
19 | \r | |
20 | Redistribution and use in source and binary forms, with or without\r | |
21 | modification, are permitted provided that the following conditions\r | |
22 | are met:\r | |
23 | 1. Redistributions of source code must retain the above copyright\r | |
24 | notice, this list of conditions and the following disclaimer.\r | |
25 | 2. Redistributions in binary form must reproduce the above copyright\r | |
26 | notice, this list of conditions and the following disclaimer in the\r | |
27 | documentation and/or other materials provided with the distribution.\r | |
28 | 3. Neither the name of the University nor the names of its contributors\r | |
29 | may be used to endorse or promote products derived from this software\r | |
30 | without specific prior written permission.\r | |
31 | \r | |
32 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\r | |
33 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r | |
34 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r | |
35 | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\r | |
36 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r | |
37 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r | |
38 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r | |
39 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r | |
40 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r | |
41 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r | |
42 | SUCH DAMAGE.\r | |
43 | \r | |
44 | stat.h 8.12 (Berkeley) 8/17/94\r | |
45 | NetBSD: stat.h,v 1.54 2006/02/24 22:01:30 thorpej Exp\r | |
46 | */\r | |
47 | #ifndef _SYS_STAT_H_\r | |
48 | #define _SYS_STAT_H_\r | |
49 | \r | |
50 | #include <sys/featuretest.h>\r | |
51 | #include <sys/types.h> /* XXX */\r | |
52 | #include <sys/time.h>\r | |
53 | \r | |
54 | struct stat {\r | |
55 | off_t st_size; /* file size, in bytes */\r | |
56 | off_t st_physsize; /* physical space the file consumes */\r | |
53e1e5c6 | 57 | off_t st_curpos; /* current position within the file, or XY coord. for Console */\r |
2aa62f2b | 58 | dtime_t st_birthtime; /* time of creation */\r |
59 | dtime_t st_atime; /* time of last access */\r | |
60 | dtime_t st_mtime; /* time of last data modification */\r | |
61 | mode_t st_mode; /* file attributes */\r | |
62 | \r | |
63 | blksize_t st_blksize; /* optimal blocksize for I/O */\r | |
64 | #if 0\r | |
65 | uint32_t st_flags; /* user defined flags for file */\r | |
66 | blkcnt_t st_blocks; /* blocks allocated for file */\r | |
67 | ino_t st_ino; /* inode's number */\r | |
68 | time_t st_ctime; /* time of last file status change */\r | |
69 | nlink_t st_nlink; /* number of hard links */\r | |
70 | uid_t st_uid; /* user ID of the file's owner */\r | |
71 | gid_t st_gid; /* group ID of the file's group */\r | |
72 | dev_t st_dev; /* inode's device */\r | |
73 | dev_t st_rdev; /* device type */\r | |
74 | uint32_t st_gen; /* file generation number */\r | |
75 | #endif\r | |
76 | uint32_t st_spare[1];\r | |
77 | };\r | |
78 | \r | |
79 | #if 0\r | |
80 | #define st_atime st_atimespec.tv_sec\r | |
81 | #define st_atimensec st_atimespec.tv_nsec\r | |
82 | #define st_mtime st_mtimespec.tv_sec\r | |
83 | #define st_mtimensec st_mtimespec.tv_nsec\r | |
84 | #define st_ctime st_ctimespec.tv_sec\r | |
85 | #define st_ctimensec st_ctimespec.tv_nsec\r | |
86 | #define st_birthtime st_birthtimespec.tv_sec\r | |
87 | #define st_birthtimensec st_birthtimespec.tv_nsec\r | |
88 | #endif\r | |
89 | \r | |
90 | #define S_ISUID 0004000 /* set user id on execution */\r | |
91 | #define S_ISGID 0002000 /* set group id on execution */\r | |
92 | #define S_ISTXT 0001000 /* sticky bit */\r | |
93 | \r | |
94 | #define S_IRWXU 0000700 /* RWX mask for owner */\r | |
95 | #define S_IRUSR 0000400 /* R for owner */\r | |
96 | #define S_IWUSR 0000200 /* W for owner */\r | |
97 | #define S_IXUSR 0000100 /* X for owner */\r | |
98 | \r | |
99 | #define S_IREAD S_IRUSR\r | |
100 | #define S_IWRITE S_IWUSR\r | |
101 | #define S_IEXEC S_IXUSR\r | |
102 | \r | |
103 | #define S_IRWXG 0000070 /* RWX mask for group */\r | |
104 | #define S_IRGRP 0000040 /* R for group */\r | |
105 | #define S_IWGRP 0000020 /* W for group */\r | |
106 | #define S_IXGRP 0000010 /* X for group */\r | |
107 | \r | |
108 | #define S_IRWXO 0000007 /* RWX mask for other */\r | |
109 | #define S_IROTH 0000004 /* R for other */\r | |
110 | #define S_IWOTH 0000002 /* W for other */\r | |
111 | #define S_IXOTH 0000001 /* X for other */\r | |
112 | \r | |
113 | /* The Octal access modes, above, fall into the Hex mask 0x00000FFF.\r | |
114 | Traditionally, the remainder of the flags are specified in Octal\r | |
115 | but they are expressed in Hex here for modern clarity.\r | |
116 | */\r | |
53e1e5c6 | 117 | #define _S_IFMT 0x000FF000 /* type-of-file mask */\r |
118 | #define _S_IFIFO 0x00001000 /* named pipe (fifo) */\r | |
2aa62f2b | 119 | #define _S_IFCHR 0x00002000 /* character special */\r |
120 | #define _S_IFDIR 0x00004000 /* directory */\r | |
121 | #define _S_IFBLK 0x00006000 /* block special */\r | |
122 | #define _S_IFREG 0x00008000 /* regular */\r | |
123 | #define _S_IFSOCK 0x0000C000 /* socket */\r | |
124 | #define _S_ITTY 0x00010000 /* File connects to a TTY device */\r | |
125 | #define _S_IWTTY 0x00020000 /* TTY receives Wide characters */\r | |
53e1e5c6 | 126 | #define _S_ICONSOLE 0x00030000 /* UEFI Console Device */\r |
2aa62f2b | 127 | \r |
128 | /* UEFI specific (FAT file system) File attributes.\r | |
53e1e5c6 | 129 | Specified in Hexadecimal instead of Octal.\r |
2aa62f2b | 130 | These bits correspond to the xx portion of _S_IFMT\r |
131 | */\r | |
132 | #define S_IREADONLY 0x00100000 // Read Only File\r | |
133 | #define S_IHIDDEN 0x00200000 // Hidden File\r | |
134 | #define S_ISYSTEM 0x00400000 // System File\r | |
135 | #define S_IDIRECTORY 0x01000000 // Directory\r | |
136 | #define S_IARCHIVE 0x02000000 // Archive Bit\r | |
137 | #define S_IROFS 0x08000000 /* Read Only File System */\r | |
138 | \r | |
53e1e5c6 | 139 | #define S_EFIONLY 0xF0000000 /* Flags only used by the EFI system calls. */\r |
140 | \r | |
2aa62f2b | 141 | #define S_EFISHIFT 20 // LS bit of the UEFI attributes\r |
142 | \r | |
2aa62f2b | 143 | //#define _S_IFLNK 0120000 /* symbolic link */\r |
144 | //#define _S_IFWHT 0160000 /* whiteout */\r | |
145 | //#define _S_ARCH1 0200000 /* Archive state 1, ls -l shows 'a' */\r | |
146 | //#define _S_ARCH2 0400000 /* Archive state 2, ls -l shows 'A' */\r | |
147 | //#define _S_ISVTX 0001000 /* ???? save swapped text even after use */\r | |
148 | \r | |
149 | \r | |
150 | #define S_IFMT _S_IFMT\r | |
151 | #define S_IFBLK _S_IFBLK\r | |
152 | #define S_IFREG _S_IFREG\r | |
53e1e5c6 | 153 | #define S_IFIFO _S_IFIFO\r |
154 | #define S_IFCHR _S_IFCHR\r | |
155 | #define S_IFDIR _S_IFDIR\r | |
2aa62f2b | 156 | //#define S_IFLNK _S_IFLNK\r |
157 | //#define S_ISVTX _S_ISVTX\r | |
53e1e5c6 | 158 | #define S_IFSOCK _S_IFSOCK\r |
2aa62f2b | 159 | //#define S_IFWHT _S_IFWHT\r |
160 | \r | |
161 | //#define S_ARCH1 _S_ARCH1\r | |
162 | //#define S_ARCH2 _S_ARCH2\r | |
163 | \r | |
164 | #define S_ISDIR(m) ((m & _S_IFMT) == _S_IFDIR) /* directory */\r | |
165 | #define S_ISCHR(m) ((m & _S_IFMT) == _S_IFCHR) /* char special */\r | |
166 | #define S_ISREG(m) ((m & _S_IFMT) == _S_IFREG) /* regular file */\r | |
167 | #define S_ISBLK(m) ((m & _S_IFMT) == _S_IFBLK) /* block special */\r | |
168 | #define S_ISSOCK(m) ((m & _S_IFMT) == _S_IFSOCK) /* socket */\r | |
169 | \r | |
53e1e5c6 | 170 | #define S_ISFIFO(m) ((m & _S_IFMT) == _S_IFIFO) /* fifo */\r |
2aa62f2b | 171 | //#define S_ISLNK(m) ((m & _S_IFMT) == _S_IFLNK) /* symbolic link */\r |
172 | //#define S_ISWHT(m) ((m & _S_IFMT) == _S_IFWHT) /* whiteout */\r | |
173 | \r | |
174 | /* The following three macros have been changed to reflect\r | |
175 | access permissions that better reflect the UEFI FAT file system.\r | |
176 | UEFI only supports Read or Read+Write instead of the *nix\r | |
177 | rwx paradigm. Thus, using 0777 is the closest analog.\r | |
178 | */\r | |
179 | #define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */\r | |
180 | #define ALLPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */\r | |
181 | #define DEFFILEMODE (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */\r | |
182 | \r | |
183 | #define S_BLKSIZE 512 /* block size used in the stat struct */\r | |
184 | \r | |
185 | /*\r | |
186 | * Definitions of flags stored in file flags word.\r | |
187 | *\r | |
188 | * Super-user and owner changeable flags.\r | |
189 | */\r | |
190 | #define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */\r | |
191 | #define UF_NODUMP 0x00000001 /* do not dump file */\r | |
192 | #define UF_IMMUTABLE 0x00000002 /* file may not be changed */\r | |
193 | #define UF_APPEND 0x00000004 /* writes to file may only append */\r | |
194 | /* UF_NOUNLINK 0x00000010 [NOT IMPLEMENTED] */\r | |
195 | /*\r | |
196 | * Super-user changeable flags.\r | |
197 | */\r | |
198 | #define SF_SETTABLE 0xffff0000 /* mask of superuser changeable flags */\r | |
199 | #define SF_ARCHIVED 0x00010000 /* file is archived */\r | |
200 | #define SF_IMMUTABLE 0x00020000 /* file may not be changed */\r | |
201 | #define SF_APPEND 0x00040000 /* writes to file may only append */\r | |
202 | /* SF_NOUNLINK 0x00100000 [NOT IMPLEMENTED] */\r | |
203 | \r | |
204 | #include <sys/EfiCdefs.h>\r | |
205 | \r | |
206 | __BEGIN_DECLS\r | |
207 | #ifndef __STAT_SYSCALLS_DECLARED\r | |
208 | #define __STAT_SYSCALLS_DECLARED\r | |
209 | extern int mkdir (const char *, mode_t);\r | |
210 | extern int fstat (int, struct stat *);\r | |
211 | extern int lstat (const char *, struct stat *);\r | |
212 | extern int stat (const char *, void *);\r | |
d7ce7006 | 213 | extern int chmod (const char *, mode_t);\r |
2aa62f2b | 214 | #endif // __STAT_SYSCALLS_DECLARED\r |
215 | __END_DECLS\r | |
216 | \r | |
217 | #endif /* !_SYS_STAT_H_ */\r |