From 08c467330ba0bc92150a65a01cd397562a5ea78d Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 16 Sep 2010 14:48:20 +0000 Subject: [PATCH] * ext/pathname/pathname.c (path_opendir): Pathname#opendir translated from pathname.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/pathname/lib/pathname.rb | 4 ---- ext/pathname/pathname.c | 13 +++++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7faa665cc3..32810357a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Sep 16 23:47:59 2010 Tanaka Akira + + * ext/pathname/pathname.c (path_opendir): Pathname#opendir translated + from pathname.rb. + Thu Sep 16 21:40:37 2010 Nobuyoshi Nakada * lib/test/unit.rb (Test::Unit::GlobOption): merged RejectOption. diff --git a/ext/pathname/lib/pathname.rb b/ext/pathname/lib/pathname.rb index ac8d106e11..1f29f38376 100644 --- a/ext/pathname/lib/pathname.rb +++ b/ext/pathname/lib/pathname.rb @@ -494,10 +494,6 @@ class Pathname # * Dir * Dir.foreach(@path) {|f| yield self.class.new(f) } end - # See Dir.open. - def opendir(&block) # :yield: dir - Dir.open(@path, &block) - end end diff --git a/ext/pathname/pathname.c b/ext/pathname/pathname.c index cc1fd8c678..92c09555ee 100644 --- a/ext/pathname/pathname.c +++ b/ext/pathname/pathname.c @@ -904,6 +904,18 @@ path_rmdir(VALUE self) return rb_funcall(rb_cDir, rb_intern("rmdir"), 1, get_strpath(self)); } +/* + * See Dir.open. + */ +static VALUE +path_opendir(VALUE self) +{ + VALUE args[1]; + + args[0] = get_strpath(self); + return rb_block_call(rb_cDir, rb_intern("open"), 1, args, 0, 0); +} + /* * == Pathname * @@ -1163,4 +1175,5 @@ Init_pathname() rb_define_method(rb_cPathname, "entries", path_entries, 0); rb_define_method(rb_cPathname, "mkdir", path_mkdir, -1); rb_define_method(rb_cPathname, "rmdir", path_rmdir, 0); + rb_define_method(rb_cPathname, "opendir", path_opendir, 0); }