summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-24 00:35:34 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-24 00:35:34 +0000
commitca258c86cfdd9a23b7e2b5d771374c381ac444f7 (patch)
tree25d247ad0e27f72169ff8f105cc846990ea97d05 /file.c
parentd8bb478e260d38be340276166e2d5c3a9206219e (diff)
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
Diffstat (limited to 'file.c')
-rw-r--r--file.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/file.c b/file.c
index c63462e783..ed13910c6b 100644
--- a/file.c
+++ b/file.c
@@ -5550,6 +5550,43 @@ statfs_fstypename(VALUE self)
#else
#define statfs_fstypename rb_f_notimplement
#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
VALUE rb_mFConst;
@@ -6149,5 +6186,6 @@ Init_File(void)
rb_define_method(rb_cStatfs, "files", statfs_files, 0);
rb_define_method(rb_cStatfs, "ffree", statfs_ffree, 0);
rb_define_method(rb_cStatfs, "fstypename", statfs_fstypename, 0);
+ rb_define_method(rb_cStatfs, "inspect", statfs_inspect, 0);
#endif
}