file.c: statfs_inspect
* file.c (statfs_inspect): add File::Statfs#inspect method. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d8bb478e26
commit
ca258c86cf
38
file.c
38
file.c
@ -5550,6 +5550,43 @@ statfs_fstypename(VALUE self)
|
|||||||
#else
|
#else
|
||||||
#define statfs_fstypename rb_f_notimplement
|
#define statfs_fstypename rb_f_notimplement
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* st.inspect -> string
|
||||||
|
*
|
||||||
|
* Returns total file nodes in filesystem.
|
||||||
|
*
|
||||||
|
* f = File.new("testfile")
|
||||||
|
* s = f.statfs
|
||||||
|
* s.inspect #=> ""
|
||||||
|
* #=> "#<File::Statfs type=zfs, bsize=4096, blocks=900000/1000000/2000000, files=100000/200000>
|
||||||
|
*
|
||||||
|
* +blocks+ are numbers of available/free/total blocks.
|
||||||
|
* +files+ are numbers of free/total files.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
statfs_inspect(VALUE self)
|
||||||
|
{
|
||||||
|
struct statfs*st = get_statfs(self);
|
||||||
|
return rb_sprintf("#<%"PRIsVALUE" type=%d"
|
||||||
|
#ifdef HAVE_STRUCT_STATFS_F_FSTYPENAME
|
||||||
|
"(%s)"
|
||||||
|
#endif
|
||||||
|
", bsize=%ld"
|
||||||
|
", blocks=%"PRI_LL_PREFIX"d/%"PRI_LL_PREFIX"d/%"PRI_LL_PREFIX"d"
|
||||||
|
", files=%"PRI_LL_PREFIX"d/%"PRI_LL_PREFIX"d"
|
||||||
|
">",
|
||||||
|
rb_obj_class(self), st->f_type,
|
||||||
|
#ifdef HAVE_STRUCT_STATFS_F_FSTYPENAME
|
||||||
|
st->f_fstypename,
|
||||||
|
#endif
|
||||||
|
(long)st->f_bsize,
|
||||||
|
st->f_bavail, st->f_bfree, st->f_blocks,
|
||||||
|
st->f_ffree, st->f_files);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VALUE rb_mFConst;
|
VALUE rb_mFConst;
|
||||||
@ -6149,5 +6186,6 @@ Init_File(void)
|
|||||||
rb_define_method(rb_cStatfs, "files", statfs_files, 0);
|
rb_define_method(rb_cStatfs, "files", statfs_files, 0);
|
||||||
rb_define_method(rb_cStatfs, "ffree", statfs_ffree, 0);
|
rb_define_method(rb_cStatfs, "ffree", statfs_ffree, 0);
|
||||||
rb_define_method(rb_cStatfs, "fstypename", statfs_fstypename, 0);
|
rb_define_method(rb_cStatfs, "fstypename", statfs_fstypename, 0);
|
||||||
|
rb_define_method(rb_cStatfs, "inspect", statfs_inspect, 0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -400,6 +400,11 @@ class TestFile < Test::Unit::TestCase
|
|||||||
assert_kind_of String, st.fstypename
|
assert_kind_of String, st.fstypename
|
||||||
rescue NotImplementedError
|
rescue NotImplementedError
|
||||||
end
|
end
|
||||||
|
s = st.inspect
|
||||||
|
assert_match /\A\#<File::Statfs\b.*>\z/, s
|
||||||
|
assert_match /\bbsize=\d+\b/, s
|
||||||
|
assert_match /\bblocks=(?:\d+[,>\/])+\b/, s
|
||||||
|
assert_match /\bfiles=(?:\d+[,>\/])+\b/, s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user