X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=support%2Fsys-statvfs.c;h=128baaa03b34c76cfc22dfdd02f732ad8bcb55d9;hb=ef7a4c06206976de7ef2e974267407347ddb75a4;hp=60fecdd92c5a11832f12ae1ac9010aebf6831068;hpb=b2262f41726a89c8209facb3ea9e4be9582422b5;p=mono.git diff --git a/support/sys-statvfs.c b/support/sys-statvfs.c index 60fecdd92c5..128baaa03b3 100644 --- a/support/sys-statvfs.c +++ b/support/sys-statvfs.c @@ -14,17 +14,27 @@ #include "mph.h" #include "map.h" +#ifdef HAVE_PATHCONF_H +#include +#endif + #ifdef HAVE_SYS_STATVFS_H #include +#elif defined (HAVE_STATFS) || defined (HAVE_FSTATFS) +#include #endif /* def HAVE_SYS_STATVFS_H */ #ifdef HAVE_GETFSSTAT +#ifdef HAVE_SYS_PARAM_H #include +#endif #include #include #include /* for pathconf */ #endif /* def HAVE_GETFSSTAT */ +#include "mono/utils/mono-compiler.h" + G_BEGIN_DECLS #ifdef HAVE_SYS_STATVFS_H @@ -121,9 +131,11 @@ Mono_Posix_Syscall_fstatvfs (gint32 fd, struct Mono_Posix_Statvfs *buf) * BSD-compatible definitions. * * Linux also provides these, but are deprecated in favor of (f)statvfs. + * Android NDK unified headers define HAVE_FSTATFS but also HAVE_SYS_STATVFS_H + * which makes these duplicates of the functions defined above */ -#if (defined (HAVE_STATFS) || defined (HAVE_FSTATFS)) && !defined (HAVE_STATVFS) +#if (defined (HAVE_STATFS) || defined (HAVE_FSTATFS)) && !defined (HAVE_STATVFS) && !defined(ANDROID_UNIFIED_HEADERS) int Mono_Posix_ToStatvfs (void *_from, struct Mono_Posix_Statvfs *to) { @@ -142,8 +154,10 @@ Mono_Posix_ToStatvfs (void *_from, struct Mono_Posix_Statvfs *to) // so this shouldn't lose anything. memcpy (&to->f_fsid, &from->f_fsid, sizeof(to->f_fsid)); +#if HAVE_STRUCT_STATFS_F_FLAGS if (Mono_Posix_ToMountFlags (from->f_flags, &to->f_flag) != 0) return -1; +#endif /* def HAVE_STRUCT_STATFS_F_FLAGS */ return 0; } @@ -165,9 +179,11 @@ Mono_Posix_FromStatvfs (struct Mono_Posix_Statvfs *from, void *_to) // so this shouldn't lose anything. memcpy (&to->f_fsid, &from->f_fsid, sizeof(to->f_fsid)); +#if HAVE_STRUCT_STATFS_F_FLAGS if (Mono_Posix_FromMountFlags (from->f_flag, &flag) != 0) return -1; to->f_flags = flag; +#endif /* def HAVE_STRUCT_STATFS_F_FLAGS */ return 0; } @@ -185,7 +201,7 @@ set_fnamemax (int fd, struct Mono_Posix_Statvfs *buf) } #endif /* (def HAVE_STATFS || def HAVE_FSTATFS) && !def HAVE_STATVFS */ -#if !defined (HAVE_STATVFS) && defined (HAVE_STATFS) +#if !defined (HAVE_STATVFS) && defined (HAVE_STATFS) && (!defined(ANDROID_UNIFIED_HEADERS) || __ANDROID_API__ >= 19) gint32 Mono_Posix_Syscall_statvfs (const char *path, struct Mono_Posix_Statvfs *buf) { @@ -206,7 +222,7 @@ Mono_Posix_Syscall_statvfs (const char *path, struct Mono_Posix_Statvfs *buf) } #endif /* !def HAVE_STATVFS && def HAVE_STATFS */ -#if !defined (HAVE_STATVFS) && defined (HAVE_STATFS) +#if !defined (HAVE_STATVFS) && defined (HAVE_STATFS) && (!defined(ANDROID_UNIFIED_HEADERS) || __ANDROID_API__ >= 19) gint32 Mono_Posix_Syscall_fstatvfs (gint32 fd, struct Mono_Posix_Statvfs *buf) {