summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.in11
-rw-r--r--file.c4
2 files changed, 15 insertions, 0 deletions
diff --git a/configure.in b/configure.in
index d44a3c5c5f..03d6596db4 100644
--- a/configure.in
+++ b/configure.in
@@ -1732,6 +1732,7 @@ AC_CHECK_TYPES([struct statfs], [], [], [@%:@ifdef HAVE_SYS_PARAM_H
@%:@ifdef HAVE_SYS_VFS_H
@%:@ include <sys/vfs.h>
@%:@endif])
+AS_IF([test "$ac_cv_type_struct_statfs" = yes], [
AC_CHECK_MEMBERS([struct statfs.f_fstypename], [], [], [@%:@ifdef HAVE_SYS_PARAM_H
@%:@ include <sys/param.h>
@%:@endif
@@ -1741,6 +1742,16 @@ AC_CHECK_MEMBERS([struct statfs.f_fstypename], [], [], [@%:@ifdef HAVE_SYS_PARAM
@%:@ifdef HAVE_SYS_VFS_H
@%:@ include <sys/vfs.h>
@%:@endif])
+AC_CHECK_TYPES([fsid_t], [], [], [@%:@ifdef HAVE_SYS_PARAM_H
+@%:@ include <sys/param.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_MOUNT_H
+@%:@ include <sys/mount.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_VFS_H
+@%:@ include <sys/vfs.h>
+@%:@endif])
+])
AC_CHECK_TYPES([clockid_t], [], [], [@%:@ifdef HAVE_TIME_H
@%:@ include <time.h>
diff --git a/file.c b/file.c
index 8c455121de..e171d0d9f8 100644
--- a/file.c
+++ b/file.c
@@ -5540,12 +5540,16 @@ statfs_ffree(VALUE self)
static VALUE
statfs_fsid(VALUE self)
{
+#ifdef HAVE_FSID_T
union {
uint64_t v;
fsid_t f;
} n = {0};
n.f = get_statfs(self)->f_fsid;
return LL2NUM(n.v);
+#else
+ return LONG2NUM(get_statfs(self)->f_fsid);
+#endif
}
#ifdef HAVE_STRUCT_STATFS_F_FSTYPENAME