Merge branch 'BigIntegerParse'
[mono.git] / mcs / class / corlib / System.IO / Directory.cs
index 6921a255e259b0ef12b7ca6bab64b0403484e187..baa366a7efbc309f2c5f4b345cec3aa567b1efe8 100644 (file)
@@ -44,10 +44,7 @@ using System.Security;
 using System.Security.Permissions;
 using System.Text;
 using System.Runtime.InteropServices;
-
-#if !MOONLIGHT
 using System.Security.AccessControl;
-#endif
 
 namespace System.IO
 {
@@ -83,13 +80,11 @@ namespace System.IO
                        return CreateDirectoriesInternal (path);
                }
 
-#if !MOONLIGHT
                [MonoLimitation ("DirectorySecurity not implemented")]
                public static DirectoryInfo CreateDirectory (string path, DirectorySecurity directorySecurity)
                {
                        return(CreateDirectory (path));
                }
-#endif
 
                static DirectoryInfo CreateDirectoriesInternal (string path)
                {
@@ -145,7 +140,7 @@ namespace System.IO
                        if (!success) {
                                /*
                                 * FIXME:
-                                * In io-layer/io.c rmdir returns error_file_not_found if directory does not exists.
+                                * In io-layer/io.c rmdir returns error_file_not_found if directory does not exist.
                                 * So maybe this could be handled somewhere else?
                                 */
                                if (error == MonoIOError.ERROR_FILE_NOT_FOUND) {
@@ -268,7 +263,6 @@ namespace System.IO
                        return GetFileSystemEntries (path, searchPattern, FileAttributes.Directory, FileAttributes.Directory);
                }
                
-#if !MOONLIGHT
                public static string [] GetDirectories (string path, string searchPattern, SearchOption searchOption)
                {
                        if (searchOption == SearchOption.TopDirectoryOnly)
@@ -284,7 +278,6 @@ namespace System.IO
                        foreach (string dir in GetDirectories (path))
                                GetDirectoriesRecurse (dir, searchPattern, all);
                }
-#endif
 
                public static string GetDirectoryRoot (string path)
                {
@@ -305,7 +298,6 @@ namespace System.IO
                        return GetFileSystemEntries (path, searchPattern, FileAttributes.Directory, 0);
                }
 
-#if !MOONLIGHT
                public static string[] GetFiles (string path, string searchPattern, SearchOption searchOption)
                {
                        if (searchOption == SearchOption.TopDirectoryOnly)
@@ -321,7 +313,6 @@ namespace System.IO
                        foreach (string dir in GetDirectories (path))
                                GetFilesRecurse (dir, searchPattern, all);
                }
-#endif
 
                public static string [] GetFileSystemEntries (string path)
                {
@@ -397,7 +388,6 @@ namespace System.IO
                                throw MonoIO.GetException (error);
                }
 
-#if !MOONLIGHT
                public static void SetAccessControl (string path, DirectorySecurity directorySecurity)
                {
                        if (null == directorySecurity)
@@ -405,7 +395,6 @@ namespace System.IO
                                
                        directorySecurity.PersistModifications (path);
                }
-#endif
 
                public static void SetCreationTime (string path, DateTime creationTime)
                {
@@ -511,7 +500,7 @@ namespace System.IO
                        return result;
                }
 
-#if NET_4_0 || MOONLIGHT || MOBILE
+#if NET_4_0
                public static string[] GetFileSystemEntries (string path, string searchPattern, SearchOption searchOption)
                {
                        // Take the simple way home:
@@ -548,7 +537,6 @@ namespace System.IO
                        IntPtr handle;
                        MonoIOError error;
                        FileAttributes rattr;
-                       
                        string s = MonoIO.FindFirst (path, path_with_pattern, out rattr, out error, out handle);
                        try {
                                while (s != null) {
@@ -556,7 +544,7 @@ namespace System.IO
                                        if (((rattr & FileAttributes.Directory) == 0) && rattr != 0)
                                                rattr |= FileAttributes.Normal;
 
-                                       if ((rattr & FileAttributes.ReparsePoint) == 0 && (rattr & kind) != 0)
+                                       if ((rattr & kind) != 0)
                                                yield return s;
 
                                        s = MonoIO.FindNext (handle, out rattr, out error);
@@ -574,7 +562,7 @@ namespace System.IO
 
                                try {
                                        while (s != null) {
-                                               if ((rattr & FileAttributes.Directory) != 0)
+                                               if ((rattr & FileAttributes.Directory) != 0 && (rattr & FileAttributes.ReparsePoint) == 0)
                                                        foreach (string child in EnumerateKind (s, searchPattern, searchOption, kind))
                                                                yield return child;
                                                s = MonoIO.FindNext (handle, out rattr, out error);
@@ -648,7 +636,6 @@ namespace System.IO
                
 #endif
 
-#if !MOONLIGHT
                public static DirectorySecurity GetAccessControl (string path, AccessControlSections includeSections)
                {
                        return new DirectorySecurity (path, includeSections);
@@ -662,6 +649,5 @@ namespace System.IO
                                                 AccessControlSections.Group |
                                                 AccessControlSections.Access);
                }
-#endif
        }
 }