summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-11-23 11:24:49 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-11-23 11:24:49 +0000
commitfd8d9d9dceb445099aacbe75eb08246925c98527 (patch)
tree537f5285cb769812bfabe8683ef93ac49d725c14 /test
parentd47a1f8aaca58788baaabd84fb3cda66ed8f57b7 (diff)
* io.c (ioctl_narg_len): don't use _IOC_SIZE macro on Linux.
On Linux some constants for ioctl(2) doesn't include the size of its return value and 16bit value; for example FIONREAD 0x541B. Moreover the manual, ioctl_list(2), says "Note that the size bits are very unreliable: in lots of cases they are wrong, either because of buggy macros using sizeof(sizeof(struct)), or because of legacy values." So we shouldn't use it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_io.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb
index f1fc3233b6..d877f5e832 100644
--- a/test/ruby/test_io.rb
+++ b/test/ruby/test_io.rb
@@ -2112,5 +2112,14 @@ End
f1.ioctl(0x80045200, entropy_count)
}
end
+
+ buf = ''
+ assert_nothing_raised do
+ fionread = 0x541B
+ File.open(__FILE__){|f1|
+ f1.ioctl(fionread, buf)
+ }
+ end
+ assert_equal(File.size(__FILE__), buf.unpack('i!')[0])
end
end