--- 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 */