src/Pure/System/standard_system.scala
changeset 34298 13e9f1f4acd9
parent 34258 e936d3c35ce0
child 34300 3f2e25dc99ab
--- a/src/Pure/System/standard_system.scala	Sat Jan 09 18:22:40 2010 +0100
+++ b/src/Pure/System/standard_system.scala	Sat Jan 09 18:23:02 2010 +0100
@@ -10,7 +10,7 @@
 import java.util.Locale
 import java.io.{BufferedWriter, OutputStreamWriter, FileOutputStream,
   BufferedInputStream, FileInputStream, BufferedReader, InputStreamReader,
-  File, IOException}
+  File, FileFilter, IOException}
 
 import scala.io.Source
 import scala.util.matching.Regex
@@ -98,6 +98,19 @@
     finally { writer.close }
   }
 
+  def find_files(start: File, ok: File => Boolean): List[File] =
+  {
+    val files = new mutable.ListBuffer[File]
+    val filter = new FileFilter { def accept(entry: File) = entry.isDirectory || ok(entry) }
+    def find_entry(entry: File)
+    {
+      if (ok(entry)) files += entry
+      if (entry.isDirectory) entry.listFiles(filter).foreach(find_entry)
+    }
+    find_entry(start)
+    files.toList
+  }
+
 
   /* shell processes */