From dc1e0de337aa02ca596c3a91c7d32daf965ab695 Mon Sep 17 00:00:00 2001 From: matz Date: Sat, 17 Jul 2004 02:23:52 +0000 Subject: * eval.c (THREAD_ALLOC): th->thread should be initialized to NULL. [ruby-talk:106657] The solution was found by Guy Decoux. * file.c (rb_stat_dev_major): new methods File::Stat#dev_major and #dev_minor. [ruby-core:03195] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@6656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- file.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'file.c') diff --git a/file.c b/file.c index 435b623e3..693279399 100644 --- a/file.c +++ b/file.c @@ -217,6 +217,52 @@ rb_stat_dev(self) return INT2NUM(get_stat(self)->st_dev); } +/* + * call-seq: + * stat.dev_major => fixnum + * + * Returns the major part of File_Stat#dev or + * nil. + * + * File.stat("/dev/fd1").dev_major #=> 2 + * File.stat("/dev/tty").dev_major #=> 5 + */ + +static VALUE +rb_stat_dev_major(self) + VALUE self; +{ +#if defined(major) + long dev = get_stat(self)->st_dev; + return ULONG2NUM(major(dev)); +#else + return Qnil; +#endif +} + +/* + * call-seq: + * stat.dev_minor => fixnum + * + * Returns the minor part of File_Stat#dev or + * nil. + * + * File.stat("/dev/fd1").dev_minor #=> 1 + * File.stat("/dev/tty").dev_minor #=> 0 + */ + +static VALUE +rb_stat_dev_minor(self) + VALUE self; +{ +#if defined(minor) + long dev = get_stat(self)->st_dev; + return ULONG2NUM(minor(dev)); +#else + return Qnil; +#endif +} + /* * call-seq: @@ -4319,6 +4365,8 @@ Init_File() rb_define_method(rb_cStat, "<=>", rb_stat_cmp, 1); rb_define_method(rb_cStat, "dev", rb_stat_dev, 0); + rb_define_method(rb_cStat, "dev_major", rb_stat_dev_major, 0); + rb_define_method(rb_cStat, "dev_minor", rb_stat_dev_minor, 0); rb_define_method(rb_cStat, "ino", rb_stat_ino, 0); rb_define_method(rb_cStat, "mode", rb_stat_mode, 0); rb_define_method(rb_cStat, "nlink", rb_stat_nlink, 0); -- cgit