diff options
| author | Tomoyuki Sahara <[email protected]> | 2014-04-21 10:24:59 +0900 |
|---|---|---|
| committer | Tomoyuki Sahara <[email protected]> | 2014-04-21 10:24:59 +0900 |
| commit | 9c00de59ceb3cf7e1a285745fa3f3c93f16cd9ec (patch) | |
| tree | bfea51e6830175c592bbd32366befa8705e92f34 | |
| parent | c46cb1b5eb1f92a23500bf877c10cd65e7c43e45 (diff) | |
| download | mruby-9c00de59ceb3cf7e1a285745fa3f3c93f16cd9ec.tar.gz mruby-9c00de59ceb3cf7e1a285745fa3f3c93f16cd9ec.zip | |
IO.for_fd can be written in Ruby.
| -rw-r--r-- | mrblib/io.rb | 4 | ||||
| -rw-r--r-- | src/io.c | 9 | ||||
| -rw-r--r-- | test/io.rb | 12 |
3 files changed, 15 insertions, 10 deletions
diff --git a/mrblib/io.rb b/mrblib/io.rb index cd8c801d2..902d847d2 100644 --- a/mrblib/io.rb +++ b/mrblib/io.rb @@ -11,6 +11,10 @@ class IO BUF_SIZE = 4096 + def self.for_fd *args + self.new(*args) + end + def self.open(*args, &block) io = self.new(*args) @@ -354,14 +354,6 @@ fptr_finalize(mrb_state *mrb, struct mrb_io *fptr, int noraise) } mrb_value -mrb_io_s_for_fd(mrb_state *mrb, mrb_value klass) -{ - mrb_value io = mrb_obj_value(mrb_data_object_alloc(mrb, mrb_class_ptr(klass), NULL, &mrb_io_type)); - - return mrb_io_initialize(mrb, io); -} - -mrb_value mrb_io_s_sysclose(mrb_state *mrb, mrb_value klass) { mrb_int fd; @@ -746,7 +738,6 @@ mrb_init_io(mrb_state *mrb) mrb_define_class_method(mrb, io, "_popen", mrb_io_s_popen, MRB_ARGS_ANY()); mrb_define_class_method(mrb, io, "_sysclose", mrb_io_s_sysclose, MRB_ARGS_REQ(1)); #endif - mrb_define_class_method(mrb, io, "for_fd", mrb_io_s_for_fd, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(2)); mrb_define_class_method(mrb, io, "select", mrb_io_s_select, MRB_ARGS_ANY()); mrb_define_class_method(mrb, io, "sysopen", mrb_io_s_sysopen, MRB_ARGS_ANY()); diff --git a/test/io.rb b/test/io.rb index 0ec0ef725..b5b952425 100644 --- a/test/io.rb +++ b/test/io.rb @@ -129,8 +129,18 @@ assert('IO#write', '15.2.20.5.20') do true end +assert('IO.for_fd') do + fd = IO.sysopen($mrbtest_io_rfname) + io = IO.for_fd(fd) + assert_equal $mrbtest_io_msg, io.read + io.close + true +end + assert('IO.new') do - IO.new(0) + io = IO.new(0) + io.close + true end assert('IO gc check') do |
