Merge pull request #485 from mtausig/master
[mono.git] / mcs / class / corlib / System.IO / DirectoryInfo.cs
index 11dee2800578fb302cbc8a8e1558313584a04754..c6ec35c77ed2ac07ba747633cbaefc75d2966f9d 100644 (file)
@@ -345,24 +345,19 @@ namespace System.IO {
                        return CreateSubdirectory (path);
                }
 
-               [MonoNotSupported ("DirectorySecurity isn't implemented")]
                public DirectorySecurity GetAccessControl ()
                {
-                       throw new UnauthorizedAccessException ();
+                       return Directory.GetAccessControl (FullPath);
                }
 
-               [MonoNotSupported ("DirectorySecurity isn't implemented")]
                public DirectorySecurity GetAccessControl (AccessControlSections includeSections)
                {
-                       throw new UnauthorizedAccessException ();
+                       return Directory.GetAccessControl (FullPath, includeSections);
                }
 
-               [MonoLimitation ("DirectorySecurity isn't implemented")]
                public void SetAccessControl (DirectorySecurity directorySecurity)
                {
-                       if (directorySecurity != null)
-                               throw new ArgumentNullException ("directorySecurity");
-                       throw new UnauthorizedAccessException ();
+                       Directory.SetAccessControl (FullPath, directorySecurity);
                }
 #endif
 
@@ -379,6 +374,14 @@ namespace System.IO {
                }
 
                public IEnumerable<DirectoryInfo> EnumerateDirectories (string searchPattern, SearchOption searchOption)
+               {
+                       if (searchPattern == null)
+                               throw new ArgumentNullException ("searchPattern");
+
+                       return CreateEnumerateDirectoriesIterator (searchPattern, searchOption);
+               }
+
+               IEnumerable<DirectoryInfo> CreateEnumerateDirectoriesIterator (string searchPattern, SearchOption searchOption)
                {
                        foreach (string name in Directory.EnumerateDirectories (FullPath, searchPattern, searchOption))
                                yield return new DirectoryInfo (name);
@@ -395,6 +398,14 @@ namespace System.IO {
                }
 
                public IEnumerable<FileInfo> EnumerateFiles (string searchPattern, SearchOption searchOption)
+               {
+                       if (searchPattern == null)
+                               throw new ArgumentNullException ("searchPattern");
+
+                       return CreateEnumerateFilesIterator (searchPattern, searchOption);
+               }
+
+               IEnumerable<FileInfo> CreateEnumerateFilesIterator (string searchPattern, SearchOption searchOption)
                {
                        foreach (string name in Directory.EnumerateFiles (FullPath, searchPattern, searchOption))
                                yield return new FileInfo (name);