// Jim Richardson, develop@wtfo-guru.com
// Dan Lewis, dihlewis@yahoo.co.uk
// Sebastien Pouliot <sebastien@ximian.com>
+// Marek Safar <marek.safar@gmail.com>
//
// Copyright (C) 2002 Ximian, Inc.
// Copyright (C) 2001 Moonlight Enterprises, All Rights Reserved
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2014 Xamarin, Inc (http://www.xamarin.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
throw MonoIO.GetException (Path.GetDirectoryName (path_with_pattern), (MonoIOError) error);
try {
- if (((rattr & FileAttributes.ReparsePoint) == 0)){
- if ((rattr & FileAttributes.Directory) != 0)
- yield return new DirectoryInfo (s);
- else
- yield return new FileInfo (s);
- }
-
- while ((s = MonoIO.FindNext (handle, out rattr, out error)) != null){
- if ((rattr & FileAttributes.ReparsePoint) != 0)
- continue;
- if ((rattr & FileAttributes.Directory) != 0)
- yield return new DirectoryInfo (s);
- else
- yield return new FileInfo (s);
-
+ do {
+ if (((rattr & FileAttributes.ReparsePoint) == 0)){
+ if ((rattr & FileAttributes.Directory) != 0)
+ yield return new DirectoryInfo (s);
+ else
+ yield return new FileInfo (s);
+ }
+
if (((rattr & FileAttributes.Directory) != 0) && subdirs)
foreach (FileSystemInfo child in EnumerateFileSystemInfos (s, searchPattern, searchOption))
yield return child;
- }
+
+ } while ((s = MonoIO.FindNext (handle, out rattr, out error)) != null);
} finally {
MonoIO.FindClose (handle);
}
using System;
using System.Collections;
+using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
Assert.AreEqual (TempFolder + DSC + "ToString.Test", info.ToString ());
}
+#if NET_4_0
+ [Test]
+ public void EnumerateFileSystemInfosTest ()
+ {
+ var dirInfo = new DirectoryInfo (TempFolder);
+ dirInfo.CreateSubdirectory ("1").CreateSubdirectory ("a");
+ dirInfo.CreateSubdirectory ("2").CreateSubdirectory ("b");
+
+ var l = new List<string> ();
+ foreach (var info in dirInfo.EnumerateFileSystemInfos ("*", SearchOption.AllDirectories))
+ l.Add (info.Name);
+
+ l.Sort ();
+ Assert.AreEqual ("1,2,a,b", string.Join (",", l), "#1");
+ }
+#endif
+
#if !MOBILE
[Test]
public void Serialization ()