diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-13 11:46:38 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-13 11:46:38 +0000 |
commit | f87ca3ffb4caab94da3f9a5732083a35c240c315 (patch) | |
tree | f484bd5075be214c61ad8e3cff437926c825a067 /file.c | |
parent | a05d713879613d9947e255e4b6207109d3f0a368 (diff) | |
download | ruby-f87ca3ffb4caab94da3f9a5732083a35c240c315.tar.gz |
* file.c (rb_stat_ino): get inode from the interval of struct st.
* win32/win32.c (stati64_set_inode): get nFilIndexHigh/Low, and set it
to the interval of struct st as inode.
* win32/win32.c (stati64_set_inode_handle): call stati64_set_inode.
* win32/win32.c (rb_w32_fstati64): call stati64_set_inode_handle.
* win32/win32.c (stati64_handle): call stati64_set_inode.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r-- | file.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -548,7 +548,18 @@ rb_stat_dev_minor(VALUE self) static VALUE rb_stat_ino(VALUE self) { -#if SIZEOF_STRUCT_STAT_ST_INO > SIZEOF_LONG +#ifdef _WIN32 + struct stat *st = get_stat(self); + unsigned short *p2 = (unsigned short *)st; + unsigned int *p4 = (unsigned int *)st; + uint64_t r; + r = p2[2]; + r <<= 16; + r |= p2[7]; + r <<= 32; + r |= p4[5]; + return ULL2NUM(r); +#elif SIZEOF_STRUCT_STAT_ST_INO > SIZEOF_LONG return ULL2NUM(get_stat(self)->st_ino); #else return ULONG2NUM(get_stat(self)->st_ino); |