replace: Add don't include unistd.h directly and add uid_wrapper.
[mat/samba.git] / lib / replace / system / filesys.h
1 #ifndef _system_filesys_h
2 #define _system_filesys_h
3 /*
4    Unix SMB/CIFS implementation.
5
6    filesystem system include wrappers
7
8    Copyright (C) Andrew Tridgell 2004
9
10      ** NOTE! The following LGPL license applies to the replace
11      ** library. This does NOT imply that all of Samba is released
12      ** under the LGPL
13
14    This library is free software; you can redistribute it and/or
15    modify it under the terms of the GNU Lesser General Public
16    License as published by the Free Software Foundation; either
17    version 3 of the License, or (at your option) any later version.
18
19    This library is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22    Lesser General Public License for more details.
23
24    You should have received a copy of the GNU Lesser General Public
25    License along with this library; if not, see <http://www.gnu.org/licenses/>.
26
27 */
28
29 #include <unistd.h>
30 #include <sys/stat.h>
31
32 #ifdef HAVE_SYS_PARAM_H
33 #include <sys/param.h>
34 #endif
35
36 #ifdef HAVE_SYS_MOUNT_H
37 #include <sys/mount.h>
38 #endif
39
40 #ifdef HAVE_MNTENT_H
41 #include <mntent.h>
42 #endif
43
44 #ifdef HAVE_SYS_VFS_H
45 #include <sys/vfs.h>
46 #endif
47
48 #ifdef HAVE_SYS_ACL_H
49 #include <sys/acl.h>
50 #endif
51
52 #ifdef HAVE_ACL_LIBACL_H
53 #include <acl/libacl.h>
54 #endif
55
56 #ifdef HAVE_SYS_FS_S5PARAM_H
57 #include <sys/fs/s5param.h>
58 #endif
59
60 #if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY)
61 #include <sys/filsys.h>
62 #endif
63
64 #ifdef HAVE_SYS_STATFS_H
65 # include <sys/statfs.h>
66 #endif
67
68 #ifdef HAVE_DUSTAT_H
69 #include <sys/dustat.h>
70 #endif
71
72 #ifdef HAVE_SYS_STATVFS_H
73 #include <sys/statvfs.h>
74 #endif
75
76 #ifdef HAVE_SYS_FILIO_H
77 #include <sys/filio.h>
78 #endif
79
80 #ifdef HAVE_SYS_FILE_H
81 #include <sys/file.h>
82 #endif
83
84 #ifdef HAVE_FCNTL_H
85 #include <fcntl.h>
86 #else
87 #ifdef HAVE_SYS_FCNTL_H
88 #include <sys/fcntl.h>
89 #endif
90 #endif
91
92 #ifdef HAVE_SYS_MODE_H
93 /* apparently AIX needs this for S_ISLNK */
94 #ifndef S_ISLNK
95 #include <sys/mode.h>
96 #endif
97 #endif
98
99 #ifdef HAVE_SYS_IOCTL_H
100 #include <sys/ioctl.h>
101 #endif
102
103 #ifdef HAVE_SYS_UIO_H
104 #include <sys/uio.h>
105 #endif
106
107 /*
108  * Veritas File System.  Often in addition to native.
109  * Quotas different.
110  */
111 #if defined(HAVE_SYS_FS_VX_QUOTA_H)
112 #define VXFS_QUOTA
113 #endif
114
115 #if HAVE_SYS_ATTRIBUTES_H
116 #include <sys/attributes.h>
117 #endif
118
119 /* mutually exclusive (SuSE 8.2) */
120 #if HAVE_ATTR_XATTR_H
121 #include <attr/xattr.h>
122 #elif HAVE_SYS_XATTR_H
123 #include <sys/xattr.h>
124 #endif
125
126
127 #ifdef HAVE_SYS_RESOURCE_H
128 #include <sys/resource.h>
129 #endif
130
131 /* Some POSIX definitions for those without */
132
133 #ifndef S_IFDIR
134 #define S_IFDIR         0x4000
135 #endif
136 #ifndef S_ISDIR
137 #define S_ISDIR(mode)   ((mode & 0xF000) == S_IFDIR)
138 #endif
139 #ifndef S_IRWXU
140 #define S_IRWXU 00700           /* read, write, execute: owner */
141 #endif
142 #ifndef S_IRUSR
143 #define S_IRUSR 00400           /* read permission: owner */
144 #endif
145 #ifndef S_IWUSR
146 #define S_IWUSR 00200           /* write permission: owner */
147 #endif
148 #ifndef S_IXUSR
149 #define S_IXUSR 00100           /* execute permission: owner */
150 #endif
151 #ifndef S_IRWXG
152 #define S_IRWXG 00070           /* read, write, execute: group */
153 #endif
154 #ifndef S_IRGRP
155 #define S_IRGRP 00040           /* read permission: group */
156 #endif
157 #ifndef S_IWGRP
158 #define S_IWGRP 00020           /* write permission: group */
159 #endif
160 #ifndef S_IXGRP
161 #define S_IXGRP 00010           /* execute permission: group */
162 #endif
163 #ifndef S_IRWXO
164 #define S_IRWXO 00007           /* read, write, execute: other */
165 #endif
166 #ifndef S_IROTH
167 #define S_IROTH 00004           /* read permission: other */
168 #endif
169 #ifndef S_IWOTH
170 #define S_IWOTH 00002           /* write permission: other */
171 #endif
172 #ifndef S_IXOTH
173 #define S_IXOTH 00001           /* execute permission: other */
174 #endif
175
176 #ifndef O_ACCMODE
177 #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
178 #endif
179
180 #ifndef MAXPATHLEN
181 #define MAXPATHLEN 256
182 #endif
183
184 #ifndef SEEK_SET
185 #define SEEK_SET 0
186 #endif
187
188 #ifdef _WIN32
189 #define mkdir(d,m) _mkdir(d)
190 #endif
191
192 #ifdef UID_WRAPPER
193 # ifndef UID_WRAPPER_DISABLE
194 #  ifndef UID_WRAPPER_NOT_REPLACE
195 #   define UID_WRAPPER_REPLACE
196 #  endif /* UID_WRAPPER_NOT_REPLACE */
197 #  include "../uid_wrapper/uid_wrapper.h"
198 # endif /* UID_WRAPPER_DISABLE */
199 #else /* UID_WRAPPER */
200 # define uwrap_enabled() 0
201 #endif /* UID_WRAPPER */
202
203 #endif