]>
Commit | Line | Data |
---|---|---|
2aa62f2b | 1 | /** @file\r |
2 | \r | |
0164fc8e | 3 | Copyright (c) 2010 - 2014, 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 | |
8379337c | 7 | http://opensource.org/licenses/bsd-license.\r |
2aa62f2b | 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 | |
8379337c | 51 | #include <sys/types.h>\r |
2aa62f2b | 52 | #include <sys/time.h>\r |
53 | \r | |
54 | struct stat {\r | |
8379337c | 55 | off_t st_size; ///< file size, in bytes\r |
56 | off_t st_physsize; ///< physical space the file consumes\r | |
57 | off_t st_curpos; ///< current position within the file, or XY coord. for Console\r | |
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 | |
2aa62f2b | 64 | uint32_t st_spare[1];\r |
65 | };\r | |
66 | \r | |
8379337c | 67 | #define S_ISUID 0004000 ///< set user id on execution\r |
68 | #define S_ISGID 0002000 ///< set group id on execution\r | |
69 | #define S_ISTXT 0001000 ///< sticky bit\r | |
70 | \r | |
71 | #define S_IRWXU 0000700 ///< RWX mask for owner\r | |
72 | #define S_IRUSR 0000400 ///< R for owner\r | |
73 | #define S_IWUSR 0000200 ///< W for owner\r | |
74 | #define S_IXUSR 0000100 ///< X for owner\r | |
2aa62f2b | 75 | \r |
76 | #define S_IREAD S_IRUSR\r | |
77 | #define S_IWRITE S_IWUSR\r | |
78 | #define S_IEXEC S_IXUSR\r | |
79 | \r | |
8379337c | 80 | #define S_IRWXG 0000070 ///< RWX mask for group\r |
81 | #define S_IRGRP 0000040 ///< R for group\r | |
82 | #define S_IWGRP 0000020 ///< W for group\r | |
83 | #define S_IXGRP 0000010 ///< X for group\r | |
2aa62f2b | 84 | \r |
8379337c | 85 | #define S_IRWXO 0000007 ///< RWX mask for other\r |
86 | #define S_IROTH 0000004 ///< R for other\r | |
87 | #define S_IWOTH 0000002 ///< W for other\r | |
88 | #define S_IXOTH 0000001 ///< X for other\r | |
2aa62f2b | 89 | \r |
90 | /* The Octal access modes, above, fall into the Hex mask 0x00000FFF.\r | |
91 | Traditionally, the remainder of the flags are specified in Octal\r | |
92 | but they are expressed in Hex here for modern clarity.\r | |
a9c12422 | 93 | \r |
94 | The basic file types, specified within 0x0000F000, are mutually exclusive.\r | |
2aa62f2b | 95 | */\r |
8379337c | 96 | #define _S_IFMT 0x000FF000 ///< type-of-file mask\r |
97 | #define _S_IFIFO 0x00001000 ///< named pipe (fifo)\r | |
a9c12422 | 98 | #define _S_IFCHR 0x00002000 ///< character special device\r |
8379337c | 99 | #define _S_IFDIR 0x00004000 ///< directory\r |
a9c12422 | 100 | #define _S_IFBLK 0x00006000 ///< block special device\r |
8379337c | 101 | #define _S_IFREG 0x00008000 ///< regular\r |
102 | #define _S_IFSOCK 0x0000C000 ///< socket\r | |
103 | #define _S_ITTY 0x00010000 ///< File connects to a TTY device\r | |
a9c12422 | 104 | #define _S_IWTTY 0x00020000 ///< TTY sends and receives Wide characters\r |
8379337c | 105 | #define _S_ICONSOLE 0x00030000 ///< UEFI Console Device\r |
2aa62f2b | 106 | \r |
107 | /* UEFI specific (FAT file system) File attributes.\r | |
53e1e5c6 | 108 | Specified in Hexadecimal instead of Octal.\r |
2aa62f2b | 109 | These bits correspond to the xx portion of _S_IFMT\r |
110 | */\r | |
111 | #define S_IREADONLY 0x00100000 // Read Only File\r | |
112 | #define S_IHIDDEN 0x00200000 // Hidden File\r | |
113 | #define S_ISYSTEM 0x00400000 // System File\r | |
114 | #define S_IDIRECTORY 0x01000000 // Directory\r | |
115 | #define S_IARCHIVE 0x02000000 // Archive Bit\r | |
8379337c | 116 | #define S_IROFS 0x08000000 ///< Read Only File System\r |
2aa62f2b | 117 | \r |
0c1992fb | 118 | #define S_EFIONLY 0xFFF00000 ///< Flags only used by the EFI system calls.\r |
53e1e5c6 | 119 | \r |
2aa62f2b | 120 | #define S_EFISHIFT 20 // LS bit of the UEFI attributes\r |
121 | \r | |
0164fc8e | 122 | #define S_IFMT _S_IFMT\r |
123 | #define S_IFIFO _S_IFIFO\r | |
124 | #define S_IFCHR _S_IFCHR\r | |
125 | #define S_IFDIR _S_IFDIR\r | |
126 | #define S_IFBLK _S_IFBLK\r | |
127 | #define S_IFREG _S_IFREG\r | |
128 | #define S_IFSOCK _S_IFSOCK\r | |
129 | #define S_ITTY _S_ITTY\r | |
130 | #define S_IWTTY _S_IWTTY\r | |
131 | #define S_ICONSOLE _S_ICONSOLE\r | |
2aa62f2b | 132 | \r |
0164fc8e | 133 | #define S_ISFIFO(m) ((m & _S_IFMT) == _S_IFIFO) ///< fifo\r |
8379337c | 134 | #define S_ISCHR(m) ((m & _S_IFMT) == _S_IFCHR) ///< char special\r |
0164fc8e | 135 | #define S_ISDIR(m) ((m & _S_IFMT) == _S_IFDIR) ///< directory\r |
8379337c | 136 | #define S_ISBLK(m) ((m & _S_IFMT) == _S_IFBLK) ///< block special\r |
0164fc8e | 137 | #define S_ISREG(m) ((m & _S_IFMT) == _S_IFREG) ///< regular file\r |
8379337c | 138 | #define S_ISSOCK(m) ((m & _S_IFMT) == _S_IFSOCK) ///< socket\r |
2aa62f2b | 139 | \r |
2aa62f2b | 140 | \r |
141 | /* The following three macros have been changed to reflect\r | |
142 | access permissions that better reflect the UEFI FAT file system.\r | |
143 | UEFI only supports Read or Read+Write instead of the *nix\r | |
144 | rwx paradigm. Thus, using 0777 is the closest analog.\r | |
145 | */\r | |
8379337c | 146 | #define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) ///< 0777\r |
147 | #define ALLPERMS (S_IRWXU|S_IRWXG|S_IRWXO) ///< 0777\r | |
148 | #define DEFFILEMODE (S_IRWXU|S_IRWXG|S_IRWXO) ///< 0777\r | |
2aa62f2b | 149 | \r |
0c1992fb | 150 | #define READ_PERMS (S_IRUSR | S_IRGRP | S_IROTH) ///< 0444\r |
151 | #define WRITE_PERMS (S_IWUSR | S_IWGRP | S_IWOTH) ///< 0222\r | |
152 | #define EXEC_PERMS (S_IXUSR | S_IXGRP | S_IXOTH) ///< 0111\r | |
153 | \r | |
8379337c | 154 | #define S_BLKSIZE 512 ///< block size used in the stat struct\r |
2aa62f2b | 155 | \r |
156 | /*\r | |
157 | * Definitions of flags stored in file flags word.\r | |
158 | *\r | |
159 | * Super-user and owner changeable flags.\r | |
160 | */\r | |
8379337c | 161 | #define UF_SETTABLE 0x0000ffff ///< mask of owner changeable flags\r |
162 | #define UF_NODUMP 0x00000001 ///< do not dump file\r | |
163 | #define UF_IMMUTABLE 0x00000002 ///< file may not be changed\r | |
164 | #define UF_APPEND 0x00000004 ///< writes to file may only append\r | |
2aa62f2b | 165 | /* UF_NOUNLINK 0x00000010 [NOT IMPLEMENTED] */\r |
166 | /*\r | |
167 | * Super-user changeable flags.\r | |
168 | */\r | |
8379337c | 169 | #define SF_SETTABLE 0xffff0000 ///< mask of superuser changeable flags\r |
170 | #define SF_ARCHIVED 0x00010000 ///< file is archived\r | |
171 | #define SF_IMMUTABLE 0x00020000 ///< file may not be changed\r | |
172 | #define SF_APPEND 0x00040000 ///< writes to file may only append\r | |
2aa62f2b | 173 | /* SF_NOUNLINK 0x00100000 [NOT IMPLEMENTED] */\r |
174 | \r | |
175 | #include <sys/EfiCdefs.h>\r | |
176 | \r | |
177 | __BEGIN_DECLS\r | |
178 | #ifndef __STAT_SYSCALLS_DECLARED\r | |
179 | #define __STAT_SYSCALLS_DECLARED\r | |
8379337c | 180 | \r |
0c1992fb | 181 | /**\r |
182 | **/\r | |
183 | mode_t umask (mode_t);\r | |
184 | \r | |
185 | /**\r | |
186 | **/\r | |
187 | int mkdir (const char *, mode_t);\r | |
8379337c | 188 | \r |
189 | /**\r | |
190 | **/\r | |
0c1992fb | 191 | int fstat (int, struct stat *);\r |
8379337c | 192 | \r |
193 | /**\r | |
194 | **/\r | |
0c1992fb | 195 | int lstat (const char *, struct stat *);\r |
8379337c | 196 | \r |
0164fc8e | 197 | /** Obtains information about the file pointed to by path.\r |
198 | \r | |
199 | Opens the file pointed to by path, calls _EFI_FileInfo with the file's handle,\r | |
200 | then closes the file.\r | |
201 | \r | |
202 | @param[in] path Path to the file to obtain information about.\r | |
203 | @param[out] statbuf Buffer in which the file status is put.\r | |
204 | \r | |
205 | @retval 0 Successful Completion.\r | |
206 | @retval -1 An error has occurred and errno has been set to\r | |
207 | identify the error.\r | |
208 | **/\r | |
0c1992fb | 209 | int stat (const char *, struct stat *);\r |
8379337c | 210 | \r |
211 | /**\r | |
212 | **/\r | |
0c1992fb | 213 | 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 |