X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FMicrosoft.Build.Engine%2FMicrosoft.Build.BuildEngine%2FDirectoryScanner.cs;h=ccb0dfd613a1569dc7495be0c350a3ddd88b3c03;hb=b75ff503063b30246eb81770e082f3f54799d52a;hp=5f93ca38825e4afb3a7f34908164c92e729be739;hpb=b2262f41726a89c8209facb3ea9e4be9582422b5;p=mono.git diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/DirectoryScanner.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/DirectoryScanner.cs index 5f93ca38825..ccb0dfd613a 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/DirectoryScanner.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/DirectoryScanner.cs @@ -140,6 +140,25 @@ namespace Microsoft.Build.BuildEngine { } else if (input [ptr] == "..") { di = new DirectoryInfo [1]; di [0] = directory.Parent; + } else if (input[ptr] == "**") + { + // Read this directory and all subdirectories recursive + Stack currentDirectories = new Stack(); + currentDirectories.Push(directory); + List allDirectories = new List(); + + while (currentDirectories.Count > 0) + { + DirectoryInfo current = currentDirectories.Pop(); + allDirectories.Add (current); + foreach (DirectoryInfo dir in current.GetDirectories()) + { + currentDirectories.Push(dir); + } + } + + // No further directories shall be read + di = allDirectories.ToArray(); } else di = directory.GetDirectories (input [ptr]); foreach (DirectoryInfo info in di) {