From c48a4c293650efe407049e6aceed53fcd35a741b Mon Sep 17 00:00:00 2001 From: akr Date: Sun, 13 Dec 2009 14:48:54 +0000 Subject: * lib/find.rb (Find.find): sort directory entries. [ruby-dev:39847] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/find.rb | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'lib/find.rb') diff --git a/lib/find.rb b/lib/find.rb index f9bc754152..12e2a5a938 100644 --- a/lib/find.rb +++ b/lib/find.rb @@ -46,22 +46,19 @@ module Find end begin if s.directory? then - d = Dir.open(file) - begin - for f in d - next if f == "." or f == ".." - if File::ALT_SEPARATOR and file =~ /^(?:[\/\\]|[A-Za-z]:[\/\\]?)$/ then - f = file + f - elsif file == "/" then - f = "/" + f - else - f = File.join(file, f) - end - paths.unshift f.untaint - end - ensure - d.close - end + fs = Dir.entries(file) + fs.sort! + fs.reverse_each {|f| + next if f == "." or f == ".." + if File::ALT_SEPARATOR and file =~ /^(?:[\/\\]|[A-Za-z]:[\/\\]?)$/ then + f = file + f + elsif file == "/" then + f = "/" + f + else + f = File.join(file, f) + end + paths.unshift f.untaint + } end rescue Errno::ENOENT, Errno::EACCES end -- cgit v1.2.3