class Filesys::Stat
Objects of class Filesys::Stat
encapsulate common status
information for Filesys
objects. The information is recorded
at the moment the Filesys::Stat
object is created; changes
made to the file after that point will not be reflected.
Many of its attributes contain platform-specific values, and not all values are meaningful on all systems.
Public Class Methods
Filesys::Stat.new( dir_name) → stat
click to toggle source
Create a Filesys::Stat object for the given file system.
VALUE rb_fsstat_init( VALUE obj, VALUE dname) { struct statfs st, *nst; SafeStringValue( dname); if (statfs( StringValueCStr( dname), &st) == -1) rb_sys_fail( RSTRING_PTR(dname)); if (DATA_PTR(obj)) { free( DATA_PTR(obj)); DATA_PTR(obj) = NULL; } nst = ALLOC(struct statfs); *nst = st; DATA_PTR(obj) = nst; return Qnil; }
Public Instance Methods
avail → num
click to toggle source
Free bytes avail to non-superuser.
VALUE rb_fsstat_avail( VALUE self) { struct statfs *s; s = get_statfs( self); return rb_funcall( INT2NUM(s->f_bavail), id_mul, 1, INT2NUM(s->f_bsize)); }
bavail → fixnum
click to toggle source
Free blocks avail to non-superuser.
VALUE rb_fsstat_bavail( VALUE self) { return INT2NUM(get_statfs(self)->f_bavail); }
blocks → fixnum
click to toggle source
Total data blocks in filesystem.
VALUE rb_fsstat_blocks( VALUE self) { return INT2NUM(get_statfs(self)->f_blocks); }
bytes → fixnum
click to toggle source
Total data bytes in filesystem.
VALUE rb_fsstat_bytes( VALUE self) { struct statfs *s; s = get_statfs( self); return rb_funcall( INT2NUM(s->f_blocks), id_mul, 1, INT2NUM(s->f_bsize)); }
inspect → string
click to toggle source
Produce a nicely formatted description of stat with all available information.
VALUE rb_fsstat_inspect( VALUE self) { VALUE str; int i, m; static const struct { const char *name; VALUE (*func)(VALUE); } member[] = { { "type", &rb_fsstat_type }, { "bsize", &rb_fsstat_bsize }, { "blocks", &rb_fsstat_blocks}, { "bfree", &rb_fsstat_bfree }, { "bavail", &rb_fsstat_bavail}, { "files", &rb_fsstat_files }, { "ffree", &rb_fsstat_ffree }, { "fsid", &rb_fsstat_fsid } }; str = rb_str_buf_new2("#<"); rb_str_buf_cat2(str, rb_obj_classname( self)); rb_str_buf_cat2(str, " "); m = sizeof(member) / sizeof(member[0]); for (i = 0; i < m; i++) { VALUE v; if (i > 0) rb_str_buf_cat2( str, ", "); rb_str_buf_cat2( str, member[i].name); rb_str_buf_cat2( str, "="); rb_str_append( str, rb_inspect( (*member[i].func)( self))); } rb_str_buf_cat2( str, ">"); OBJ_INFECT( str, self); return str; }
pavail → fixnum
click to toggle source
Free percentage avail to non-superuser.
VALUE rb_fsstat_pavail( VALUE self) { struct statfs *s; s = get_statfs( self); return rb_float_new( 100.0 * s->f_bavail / s->f_blocks); }