about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/dtas/buffer.rb2
-rw-r--r--lib/dtas/buffer/read_write.rb1
-rw-r--r--lib/dtas/buffer/splice.rb1
-rw-r--r--lib/dtas/compat_rbx.rb12
-rw-r--r--lib/dtas/unix_accepted.rb1
-rw-r--r--lib/dtas/unix_client.rb1
6 files changed, 16 insertions, 2 deletions
diff --git a/lib/dtas/buffer.rb b/lib/dtas/buffer.rb
index c0ba6a6..f2b0240 100644
--- a/lib/dtas/buffer.rb
+++ b/lib/dtas/buffer.rb
@@ -1,6 +1,8 @@
 # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
 # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
+require 'io/wait'
 require_relative '../dtas'
+require_relative 'compat_rbx' # IO#nread
 
 class DTAS::Buffer # :nodoc:
   begin
diff --git a/lib/dtas/buffer/read_write.rb b/lib/dtas/buffer/read_write.rb
index 11d1a95..53b11de 100644
--- a/lib/dtas/buffer/read_write.rb
+++ b/lib/dtas/buffer/read_write.rb
@@ -1,6 +1,5 @@
 # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
 # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
-require 'io/wait'
 require 'io/nonblock'
 require_relative '../../dtas'
 require_relative '../pipe'
diff --git a/lib/dtas/buffer/splice.rb b/lib/dtas/buffer/splice.rb
index 90c2e47..55ce3d5 100644
--- a/lib/dtas/buffer/splice.rb
+++ b/lib/dtas/buffer/splice.rb
@@ -1,6 +1,5 @@
 # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
 # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
-require 'io/wait'
 require 'io/nonblock'
 require 'io/splice'
 require_relative '../../dtas'
diff --git a/lib/dtas/compat_rbx.rb b/lib/dtas/compat_rbx.rb
new file mode 100644
index 0000000..a64bf78
--- /dev/null
+++ b/lib/dtas/compat_rbx.rb
@@ -0,0 +1,12 @@
+# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
+# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
+
+# ref: https://github.com/rubysl/rubysl-io-wait/issues/1
+# this ignores buffers and is Linux-only
+class IO
+  def nread
+    buf = "\0" * 8
+    ioctl(0x541B, buf)
+    buf.unpack("l_")[0]
+  end
+end if ! IO.method_defined?(:nread) && RUBY_PLATFORM =~ /linux/
diff --git a/lib/dtas/unix_accepted.rb b/lib/dtas/unix_accepted.rb
index be344c7..6658406 100644
--- a/lib/dtas/unix_accepted.rb
+++ b/lib/dtas/unix_accepted.rb
@@ -2,6 +2,7 @@
 # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
 require 'socket'
 require 'io/wait'
+require_relative 'compat_rbx'
 
 class DTAS::UNIXAccepted # :nodoc:
   attr_reader :to_io
diff --git a/lib/dtas/unix_client.rb b/lib/dtas/unix_client.rb
index fa94bbf..fa8b11c 100644
--- a/lib/dtas/unix_client.rb
+++ b/lib/dtas/unix_client.rb
@@ -5,6 +5,7 @@ require_relative 'xs'
 require 'socket'
 require 'io/wait'
 require 'shellwords'
+require_relative 'compat_rbx'
 
 class DTAS::UNIXClient # :nodoc:
   attr_reader :to_io