diff options
Diffstat (limited to 'lib/find.rb')
-rw-r--r-- | lib/find.rb | 29 |
1 files changed, 13 insertions, 16 deletions
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 |