xrootd
XrdPosixLinkage.hh
Go to the documentation of this file.
1 #ifndef _XRDPOSIXLINKAGE_H_
2 #define _XRDPOSIXLINKAGE_H_
3 /******************************************************************************/
4 /* */
5 /* X r d P o s i x L i n k a g e . h h */
6 /* */
7 /* (c) 2005 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* All Rights Reserved */
9 /* Produced by Andrew Hanushevsky for Stanford University under contract */
10 /* DE-AC02-76-SFO0515 with the Department of Energy */
11 /******************************************************************************/
12 
13 // $Id$
14 
15 #include <sys/types.h>
16 #include <sys/stat.h>
17 #include <sys/statvfs.h>
18 #include <dirent.h>
19 #include <errno.h>
20 #include <fcntl.h>
21 #include <stdio.h>
22 #include <unistd.h>
23 
25 #include "XrdSys/XrdSysPlatform.hh"
26 
27 /******************************************************************************/
28 /* Posix Symbols vs Return Valus and Arguments */
29 /******************************************************************************/
30 
31 //#ifdef __linux__
32 //#define UNIX_PFX "__"
33 //#else
34 #define UNIX_PFX
35 //#endif
36 
37 #define Symb_Access UNIX_PFX "access"
38 #define Retv_Access int
39 #define Args_Access const char *path, int amode
40 
41 #define Symb_Acl UNIX_PFX "acl"
42 #define Retv_Acl int
43 #define Args_Acl const char *, int, int, void *
44 
45 #define Symb_Chdir UNIX_PFX "chdir"
46 #define Retv_Chdir int
47 #define Args_Chdir const char *path
48 
49 #define Symb_Close UNIX_PFX "close"
50 #define Retv_Close int
51 #define Args_Close int
52 
53 #define Symb_Closedir UNIX_PFX "closedir"
54 #define Retv_Closedir int
55 #define Args_Closedir DIR *
56 
57 #define Symb_Fclose UNIX_PFX "fclose"
58 #define Retv_Fclose int
59 #define Args_Fclose FILE *
60 
61 #define Symb_Fcntl UNIX_PFX "fcntl"
62 #define Retv_Fcntl int
63 #define Args_Fcntl int, int, ...
64 
65 #define Symb_Fcntl64 UNIX_PFX "fcntl64"
66 #define Retv_Fcntl64 int
67 #define Args_Fcntl64 int, int, ...
68 
69 #define Symb_Fdatasync UNIX_PFX "fdatasync"
70 #define Retv_Fdatasync int
71 #define Args_Fdatasync int
72 
73 #define Symb_Fflush UNIX_PFX "fflush"
74 #define Retv_Fflush int
75 #define Args_Fflush FILE *
76 
77 #define Symb_Fopen UNIX_PFX "fopen"
78 #define Retv_Fopen FILE *
79 #define Args_Fopen const char *, const char *
80 
81 #define Symb_Fopen64 UNIX_PFX "fopen64"
82 #define Retv_Fopen64 FILE *
83 #define Args_Fopen64 const char *, const char *
84 
85 #define Symb_Fread UNIX_PFX "fread"
86 #define Retv_Fread size_t
87 #define Args_Fread void *, size_t, size_t, FILE *
88 
89 #define Symb_Fseek UNIX_PFX "fseek"
90 #define Retv_Fseek int
91 #define Args_Fseek FILE *, long, int
92 
93 #define Symb_Fseeko UNIX_PFX "fseeko"
94 #define Retv_Fseeko int
95 #define Args_Fseeko FILE *, off_t, int
96 
97 #define Symb_Fseeko64 UNIX_PFX "fseeko64"
98 #define Retv_Fseeko64 int
99 #define Args_Fseeko64 FILE *, off64_t, int
100 
101 #ifdef __linux__
102 #define Symb_Fstat UNIX_PFX "__fxstat"
103 #define Retv_Fstat int
104 #define Args_Fstat int, int, struct stat *
105 #else
106 #define Symb_Fstat UNIX_PFX "fstat"
107 #define Retv_Fstat int
108 #define Args_Fstat int, struct stat *
109 #endif
110 
111 #ifdef __linux__
112 #define Symb_Fstat64 UNIX_PFX "__fxstat64"
113 #define Retv_Fstat64 int
114 #define Args_Fstat64 int, int, struct stat64 *
115 #else
116 #define Symb_Fstat64 UNIX_PFX "fstat64"
117 #define Retv_Fstat64 int
118 #define Args_Fstat64 int, struct stat64 *
119 #endif
120 
121 #define Symb_Fsync UNIX_PFX "fsync"
122 #define Retv_Fsync int
123 #define Args_Fsync int
124 
125 #define Symb_Ftell UNIX_PFX "ftell"
126 #define Retv_Ftell long
127 #define Args_Ftell FILE *
128 
129 #define Symb_Ftello UNIX_PFX "ftello"
130 #define Retv_Ftello off_t
131 #define Args_Ftello FILE *
132 
133 #define Symb_Ftello64 UNIX_PFX "ftello64"
134 #define Retv_Ftello64 off64_t
135 #define Args_Ftello64 FILE *
136 
137 #define Symb_Ftruncate UNIX_PFX "ftruncate"
138 #define Retv_Ftruncate int
139 #define Args_Ftruncate int, off_t
140 
141 #define Symb_Ftruncate64 UNIX_PFX "ftruncate64"
142 #define Retv_Ftruncate64 int
143 #define Args_Ftruncate64 int, off64_t
144 
145 #define Symb_Fwrite UNIX_PFX "fwrite"
146 #define Retv_Fwrite int
147 #define Args_Fwrite const void *, size_t, size_t, FILE *
148 
149 #define Symb_Fgetxattr UNIX_PFX "fgetxattr"
150 #define Retv_Fgetxattr ssize_t
151 #define Args_Fgetxattr int, const char *, const void *, size_t
152 
153 #define Symb_Getxattr UNIX_PFX "getxattr"
154 #define Retv_Getxattr ssize_t
155 #define Args_Getxattr const char *, const char *, const void *, size_t
156 
157 #define Symb_Lgetxattr UNIX_PFX "lgetxattr"
158 #define Retv_Lgetxattr ssize_t
159 #define Args_Lgetxattr const char *, const char *, const void *, size_t
160 
161 #define Symb_Lseek UNIX_PFX "lseek"
162 #define Retv_Lseek off_t
163 #define Args_Lseek int, off_t, int
164 
165 #define Symb_Lseek64 UNIX_PFX "lseek64"
166 #define Retv_Lseek64 off64_t
167 #define Args_Lseek64 int, off64_t, int
168 
169 #ifdef __linux__
170 #define Symb_Lstat UNIX_PFX "__lxstat"
171 #define Retv_Lstat int
172 #define Args_Lstat int, const char *, struct stat *
173 #else
174 #define Symb_Lstat UNIX_PFX "lstat"
175 #define Retv_Lstat int
176 #define Args_Lstat const char *, struct stat *
177 #endif
178 
179 #ifdef __linux__
180 #define Symb_Lstat64 UNIX_PFX "__lxstat64"
181 #define Retv_Lstat64 int
182 #define Args_Lstat64 int, const char *, struct stat64 *
183 #else
184 #define Symb_Lstat64 UNIX_PFX "lstat64"
185 #define Retv_Lstat64 int
186 #define Args_Lstat64 const char *, struct stat64 *
187 #endif
188 
189 #define Symb_Mkdir UNIX_PFX "mkdir"
190 #define Retv_Mkdir int
191 #define Args_Mkdir const char *, mode_t
192 
193 #define Symb_Open UNIX_PFX "open"
194 #define Retv_Open int
195 #define Args_Open const char *, int, ...
196 
197 #define Symb_Open64 UNIX_PFX "open64"
198 #define Retv_Open64 int
199 #define Args_Open64 const char *, int, ...
200 
201 #define Symb_Opendir UNIX_PFX "opendir"
202 #define Retv_Opendir DIR *
203 #define Args_Opendir const char *
204 
205 #define Symb_Pathconf UNIX_PFX "pathconf"
206 #define Retv_Pathconf long
207 #define Args_Pathconf const char *, int
208 
209 #define Symb_Pread UNIX_PFX "pread"
210 #define Retv_Pread ssize_t
211 #define Args_Pread int, void *, size_t, off_t
212 
213 #define Symb_Pread64 UNIX_PFX "pread64"
214 #define Retv_Pread64 ssize_t
215 #define Args_Pread64 int, void *, size_t, off64_t
216 
217 #define Symb_Pwrite UNIX_PFX "pwrite"
218 #define Retv_Pwrite ssize_t
219 #define Args_Pwrite int, const void *, size_t, off_t
220 
221 #define Symb_Pwrite64 UNIX_PFX "pwrite64"
222 #define Retv_Pwrite64 ssize_t
223 #define Args_Pwrite64 int, const void *, size_t, off64_t
224 
225 #define Symb_Read UNIX_PFX "read"
226 #define Retv_Read ssize_t
227 #define Args_Read int, void *, size_t
228 
229 #define Symb_Readv UNIX_PFX "readv"
230 #define Retv_Readv ssize_t
231 #define Args_Readv int, const struct iovec *, int
232 
233 #define Symb_Readdir UNIX_PFX "readdir"
234 #define Retv_Readdir struct dirent *
235 #define Args_Readdir DIR *
236 
237 #define Symb_Readdir64 UNIX_PFX "readdir64"
238 #define Retv_Readdir64 struct dirent64 *
239 #define Args_Readdir64 DIR *
240 
241 #define Symb_Readdir_r UNIX_PFX "readdir_r"
242 #define Retv_Readdir_r int
243 #define Args_Readdir_r DIR *, struct dirent *, struct dirent **
244 
245 #define Symb_Readdir64_r UNIX_PFX "readdir64_r"
246 #define Retv_Readdir64_r int
247 #define Args_Readdir64_r DIR *, struct dirent64 *, struct dirent64 **
248 
249 #define Symb_Rename UNIX_PFX "rename"
250 #define Retv_Rename int
251 #define Args_Rename const char *, const char *
252 
253 #define Symb_Rewinddir UNIX_PFX "rewinddir"
254 #define Retv_Rewinddir void
255 #define Args_Rewinddir DIR *
256 
257 #define Symb_Rmdir UNIX_PFX "rmdir"
258 #define Retv_Rmdir int
259 #define Args_Rmdir const char *
260 
261 #define Symb_Seekdir UNIX_PFX "seekdir"
262 #define Retv_Seekdir void
263 #define Args_Seekdir DIR *, long
264 
265 #ifdef __linux__
266 #define Symb_Stat UNIX_PFX "__xstat"
267 #define Retv_Stat int
268 #define Args_Stat int, const char *, struct stat *
269 #else
270 #define Symb_Stat UNIX_PFX "stat"
271 #define Retv_Stat int
272 #define Args_Stat const char *, struct stat *
273 #endif
274 
275 #ifdef __linux__
276 #define Symb_Stat64 UNIX_PFX "__xstat64"
277 #define Retv_Stat64 int
278 #define Args_Stat64 int, const char *, struct stat64 *
279 #else
280 #define Symb_Stat64 UNIX_PFX "stat64"
281 #define Retv_Stat64 int
282 #define Args_Stat64 const char *, struct stat64 *
283 #endif
284 
285 #define Symb_Statfs UNIX_PFX "statfs"
286 #define Retv_Statfs int
287 #define Args_Statfs const char *, struct statfs *
288 
289 #define Symb_Statfs64 UNIX_PFX "statfs64"
290 #define Retv_Statfs64 int
291 #define Args_Statfs64 const char *, struct statfs64 *
292 
293 #define Symb_Statvfs UNIX_PFX "statvfs"
294 #define Retv_Statvfs int
295 #define Args_Statvfs const char *, struct statvfs *
296 
297 #define Symb_Statvfs64 UNIX_PFX "statvfs64"
298 #define Retv_Statvfs64 int
299 #define Args_Statvfs64 const char *, struct statvfs64 *
300 
301 #define Symb_Telldir UNIX_PFX "telldir"
302 #define Retv_Telldir long
303 #define Args_Telldir DIR *
304 
305 #define Symb_Truncate UNIX_PFX "truncate"
306 #define Retv_Truncate int
307 #define Args_Truncate const char *, off_t
308 
309 #define Symb_Truncate64 UNIX_PFX "truncate64"
310 #define Retv_Truncate64 int
311 #define Args_Truncate64 const char *, off64_t
312 
313 #define Symb_Unlink UNIX_PFX "unlink"
314 #define Retv_Unlink int
315 #define Args_Unlink const char *
316 
317 #define Symb_Write UNIX_PFX "write"
318 #define Retv_Write ssize_t
319 #define Args_Write int, const void *, size_t
320 
321 #define Symb_Writev UNIX_PFX "writev"
322 #define Retv_Writev ssize_t
323 #define Args_Writev int, const struct iovec *, int
324 
325 /******************************************************************************/
326 /* C a l l O u t V e c t o r D e f i n i t i o n */
327 /******************************************************************************/
328 
330 {public:
331  int Init(int *X=0) {if (!Done) Done = Resolve(); return 0;}
332 
396 
397  int Load_Error(const char *epname, int retv=-1);
398 
401 
402 private:
403 int Done;
404 void Missing(const char *);
405 int Resolve();
406 };
407 // Warning! This class is meant to be defined as a static object.
408 #endif