~ubuntu-branches/ubuntu/wily/edk2/wily

« back to all changes in this revision

Viewing changes to StdLib/Include/sys/stat.h

  • Committer: Package Import Robot
  • Author(s): Steve Langasek
  • Date: 2013-02-10 13:11:25 UTC
  • Revision ID: package-import@ubuntu.com-20130210131125-0zwkb8f8m4ecia4m
Tags: upstream-0~20121205.edae8d2d
ImportĀ upstreamĀ versionĀ 0~20121205.edae8d2d

Show diffs side-by-side

added added

removed removed

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