24 */
25
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <limits.h>
29 #include <fcntl.h>
30 #include <dirent.h>
31 #include <unistd.h>
32 #include <errno.h>
33 #include <dlfcn.h>
34 #include <sys/types.h>
35 #include <sys/stat.h>
36 #ifdef MACOSX
37 #include <sys/param.h>
38 #include <sys/mount.h>
39 #else
40 #include <sys/statvfs.h>
41 #endif
42 #include <sys/time.h>
43
44 /* For POSIX-compliant getpwuid_r, getgrgid_r on Solaris */
45 #if defined(__solaris__)
46 #define _POSIX_PTHREAD_SEMANTICS
47 #endif
48 #include <pwd.h>
49 #include <grp.h>
50
51 #ifdef __solaris__
52 #include <strings.h>
53 #endif
54
55 #ifdef __linux__
56 #include <sys/syscall.h>
57 #endif
58
59 #if defined(__linux__) || defined(_AIX)
60 #include <string.h>
61 #endif
62
63 #ifdef _ALLBSD_SOURCE
64 #include <string.h>
65
66 #define stat64 stat
67 #ifndef MACOSX
68 #define statvfs64 statvfs
69 #endif
70
71 #define open64 open
72 #define fstat64 fstat
73 #define lstat64 lstat
74 #define readdir64 readdir
246 attrs_f_bfree = (*env)->GetFieldID(env, clazz, "f_bfree", "J");
247 CHECK_NULL_RETURN(attrs_f_bfree, 0);
248 attrs_f_bavail = (*env)->GetFieldID(env, clazz, "f_bavail", "J");
249 CHECK_NULL_RETURN(attrs_f_bavail, 0);
250
251 clazz = (*env)->FindClass(env, "sun/nio/fs/UnixMountEntry");
252 CHECK_NULL_RETURN(clazz, 0);
253 entry_name = (*env)->GetFieldID(env, clazz, "name", "[B");
254 CHECK_NULL_RETURN(entry_name, 0);
255 entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B");
256 CHECK_NULL_RETURN(entry_dir, 0);
257 entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B");
258 CHECK_NULL_RETURN(entry_fstype, 0);
259 entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B");
260 CHECK_NULL_RETURN(entry_options, 0);
261 entry_dev = (*env)->GetFieldID(env, clazz, "dev", "J");
262 CHECK_NULL_RETURN(entry_dev, 0);
263
264 /* system calls that might not be available at run time */
265
266 #if (defined(__solaris__) && defined(_LP64)) || defined(_ALLBSD_SOURCE)
267 /* Solaris 64-bit does not have openat64/fstatat64 */
268 my_openat64_func = (openat64_func*)dlsym(RTLD_DEFAULT, "openat");
269 my_fstatat64_func = (fstatat64_func*)dlsym(RTLD_DEFAULT, "fstatat");
270 #else
271 my_openat64_func = (openat64_func*) dlsym(RTLD_DEFAULT, "openat64");
272 my_fstatat64_func = (fstatat64_func*) dlsym(RTLD_DEFAULT, "fstatat64");
273 #endif
274 my_unlinkat_func = (unlinkat_func*) dlsym(RTLD_DEFAULT, "unlinkat");
275 my_renameat_func = (renameat_func*) dlsym(RTLD_DEFAULT, "renameat");
276 #ifndef _ALLBSD_SOURCE
277 my_futimesat_func = (futimesat_func*) dlsym(RTLD_DEFAULT, "futimesat");
278 my_lutimes_func = (lutimes_func*) dlsym(RTLD_DEFAULT, "lutimes");
279 #endif
280 my_futimens_func = (futimens_func*) dlsym(RTLD_DEFAULT, "futimens");
281 #if defined(_AIX)
282 my_fdopendir_func = (fdopendir_func*) dlsym(RTLD_DEFAULT, "fdopendir64");
283 #else
284 my_fdopendir_func = (fdopendir_func*) dlsym(RTLD_DEFAULT, "fdopendir");
285 #endif
286
287 #if defined(FSTATAT64_SYSCALL_AVAILABLE)
|
24 */
25
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <limits.h>
29 #include <fcntl.h>
30 #include <dirent.h>
31 #include <unistd.h>
32 #include <errno.h>
33 #include <dlfcn.h>
34 #include <sys/types.h>
35 #include <sys/stat.h>
36 #ifdef MACOSX
37 #include <sys/param.h>
38 #include <sys/mount.h>
39 #else
40 #include <sys/statvfs.h>
41 #endif
42 #include <sys/time.h>
43
44 /* For POSIX-compliant getpwuid_r */
45 #include <pwd.h>
46 #include <grp.h>
47
48 #ifdef __linux__
49 #include <sys/syscall.h>
50 #endif
51
52 #if defined(__linux__) || defined(_AIX)
53 #include <string.h>
54 #endif
55
56 #ifdef _ALLBSD_SOURCE
57 #include <string.h>
58
59 #define stat64 stat
60 #ifndef MACOSX
61 #define statvfs64 statvfs
62 #endif
63
64 #define open64 open
65 #define fstat64 fstat
66 #define lstat64 lstat
67 #define readdir64 readdir
239 attrs_f_bfree = (*env)->GetFieldID(env, clazz, "f_bfree", "J");
240 CHECK_NULL_RETURN(attrs_f_bfree, 0);
241 attrs_f_bavail = (*env)->GetFieldID(env, clazz, "f_bavail", "J");
242 CHECK_NULL_RETURN(attrs_f_bavail, 0);
243
244 clazz = (*env)->FindClass(env, "sun/nio/fs/UnixMountEntry");
245 CHECK_NULL_RETURN(clazz, 0);
246 entry_name = (*env)->GetFieldID(env, clazz, "name", "[B");
247 CHECK_NULL_RETURN(entry_name, 0);
248 entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B");
249 CHECK_NULL_RETURN(entry_dir, 0);
250 entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B");
251 CHECK_NULL_RETURN(entry_fstype, 0);
252 entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B");
253 CHECK_NULL_RETURN(entry_options, 0);
254 entry_dev = (*env)->GetFieldID(env, clazz, "dev", "J");
255 CHECK_NULL_RETURN(entry_dev, 0);
256
257 /* system calls that might not be available at run time */
258
259 #if defined(_ALLBSD_SOURCE)
260 my_openat64_func = (openat64_func*)dlsym(RTLD_DEFAULT, "openat");
261 my_fstatat64_func = (fstatat64_func*)dlsym(RTLD_DEFAULT, "fstatat");
262 #else
263 my_openat64_func = (openat64_func*) dlsym(RTLD_DEFAULT, "openat64");
264 my_fstatat64_func = (fstatat64_func*) dlsym(RTLD_DEFAULT, "fstatat64");
265 #endif
266 my_unlinkat_func = (unlinkat_func*) dlsym(RTLD_DEFAULT, "unlinkat");
267 my_renameat_func = (renameat_func*) dlsym(RTLD_DEFAULT, "renameat");
268 #ifndef _ALLBSD_SOURCE
269 my_futimesat_func = (futimesat_func*) dlsym(RTLD_DEFAULT, "futimesat");
270 my_lutimes_func = (lutimes_func*) dlsym(RTLD_DEFAULT, "lutimes");
271 #endif
272 my_futimens_func = (futimens_func*) dlsym(RTLD_DEFAULT, "futimens");
273 #if defined(_AIX)
274 my_fdopendir_func = (fdopendir_func*) dlsym(RTLD_DEFAULT, "fdopendir64");
275 #else
276 my_fdopendir_func = (fdopendir_func*) dlsym(RTLD_DEFAULT, "fdopendir");
277 #endif
278
279 #if defined(FSTATAT64_SYSCALL_AVAILABLE)
|