aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-22 14:57:18 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-22 14:57:18 +0000
commit900ede40532640376f7a2ee359e70df2a546e060 (patch)
treee6c58c3a59473f197204c77e5b865789bafcd31c
parenta197581765fa78c848f3d49233f47ec2e8fc90c0 (diff)
downloadruby-900ede40532640376f7a2ee359e70df2a546e060.tar.gz
* file.c (rb_io_stafs): use statfs(2) if fstatfs(2) is unavailable.
* configure.in (fstatfs): check it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--configure.in1
-rw-r--r--file.c7
3 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d38af7085d..6510e8358c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Tue Apr 22 23:56:24 2014 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_io_stafs): use statfs(2) if fstatfs(2) is unavailable.
+
+ * configure.in (fstatfs): check it.
+
Tue Apr 22 23:14:28 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c (strio_write): use rb_str_append to
diff --git a/configure.in b/configure.in
index 44b7e2c3ed..d7a479f4a6 100644
--- a/configure.in
+++ b/configure.in
@@ -1946,6 +1946,7 @@ AC_CHECK_FUNCS(fcntl)
AC_CHECK_FUNCS(fdatasync)
AC_CHECK_FUNCS(fmod)
AC_CHECK_FUNCS(fork)
+AC_CHECK_FUNCS(fstatfs)
AC_CHECK_FUNCS(fsync)
AC_CHECK_FUNCS(ftruncate)
AC_CHECK_FUNCS(ftruncate64) # used for Win32 platform
diff --git a/file.c b/file.c
index 8fe3796835..a8ac67eb4a 100644
--- a/file.c
+++ b/file.c
@@ -1120,7 +1120,12 @@ rb_io_statfs(VALUE obj)
struct statfs st;
GetOpenFile(obj, fptr);
- if (fstatfs(fptr->fd, &st) == -1) {
+#ifdef HAVE_FSTATFS
+ if (fstatfs(fptr->fd, &st) == -1)
+#else
+ if (statfs(RSTRING_PTR(fptr->pathv), &st) == -1)
+#endif
+ {
rb_sys_fail_path(fptr->pathv);
}
return rb_statfs_new(&st);