From 900ede40532640376f7a2ee359e70df2a546e060 Mon Sep 17 00:00:00 2001 From: usa Date: Tue, 22 Apr 2014 14:57:18 +0000 Subject: [PATCH] * 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 --- ChangeLog | 6 ++++++ configure.in | 1 + file.c | 7 ++++++- 3 files changed, 13 insertions(+), 1 deletion(-) 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 + + * 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 * 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);