diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-10-13 23:09:56 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-10-13 23:09:56 +0000 |
commit | 51427700cc7da46430f0873f4d3b3478016786d9 (patch) | |
tree | d8518fba22c594d05765c220018073ab281d95e8 /file.c | |
parent | 7735e63593a4bef31c0c573e793eec5474b4bac1 (diff) | |
download | ruby-51427700cc7da46430f0873f4d3b3478016786d9.tar.gz |
* file.c (DEVT2NUM): added. Size of dev_t is depend on the
environment even if POSIX defines dev_t as unsigned integer.
For example, OpenVMS, 64bit Solaris 9, and NetBSD 6 defines
dev_t as 64bit unsigned integer.
* file.c (rb_stat_dev): use DEVT2NUM.
* file.c (rb_stat_dev_major): dev_t is not long. major(3)'s return
value is int.
* file.c (rb_stat_dev_minor): dev_t is not long. minor(3)'s return
value is int.
* configure.in: check size of dev_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r-- | file.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -316,6 +316,14 @@ rb_stat_cmp(VALUE self, VALUE other) #define ST2UINT(val) ((val) & ~(~1UL << (sizeof(val) * CHAR_BIT - 1))) +#if SIZEOF_DEV_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) +# define DEVT2NUM(v) LL2NUM(v) +#elif SIZEOF_DEV_T == SIZEOF_LONG +# define DEVT2NUM(v) LONG2NUM(v) +#else +# define DEVT2NUM(v) INT2NUM(v) +#endif + /* * call-seq: * stat.dev -> fixnum @@ -329,7 +337,7 @@ rb_stat_cmp(VALUE self, VALUE other) static VALUE rb_stat_dev(VALUE self) { - return INT2NUM(get_stat(self)->st_dev); + return DEVT2NUM(get_stat(self)->st_dev); } /* @@ -347,8 +355,7 @@ static VALUE rb_stat_dev_major(VALUE self) { #if defined(major) - long dev = get_stat(self)->st_dev; - return ULONG2NUM(major(dev)); + return INT2NUM(major(get_stat(self)->st_dev)); #else return Qnil; #endif @@ -369,8 +376,7 @@ static VALUE rb_stat_dev_minor(VALUE self) { #if defined(minor) - long dev = get_stat(self)->st_dev; - return ULONG2NUM(minor(dev)); + return INT2NUM(minor(get_stat(self)->st_dev)); #else return Qnil; #endif |