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); }