2008-01-15 Stephane Delcroix <sdelcroix@novell.com>
[mono.git] / mcs / class / corlib / System.IO / Directory.cs
index a802b10c8c840df7c7cc68792e43cede60e0b0aa..dfc6049f1bc8f2bfcfce0e246f80464f95a30630 100644 (file)
@@ -44,10 +44,14 @@ using System.Security.Permissions;
 using System.Text;
 #if NET_2_0
 using System.Security.AccessControl;
+using System.Runtime.InteropServices;
 #endif
 
 namespace System.IO
 {
+#if NET_2_0
+       [ComVisible (true)]
+#endif
        public
 #if NET_2_0
        static
@@ -88,6 +92,14 @@ namespace System.IO
                        return CreateDirectoriesInternal (path);
                }
 
+#if NET_2_0
+               [MonoTODO ("DirectorySecurity not implemented")]
+               public static DirectoryInfo CreateDirectory (string path, DirectorySecurity directorySecurity)
+               {
+                       return(CreateDirectory (path));
+               }
+#endif
+
                static DirectoryInfo CreateDirectoriesInternal (string path)
                {
                        if (SecurityManager.SecurityEnabled) {
@@ -143,8 +155,7 @@ namespace System.IO
                                 */
                                success = MonoIO.DeleteFile (path, out error);
                        } else {
-                               success = MonoIO.RemoveDirectory (path,
-                                                                 out error);
+                               success = MonoIO.RemoveDirectory (path, out error);
                        }
                        
                        if (!success) {
@@ -218,12 +229,12 @@ namespace System.IO
                {
                        return File.GetLastAccessTime (path);
                }
-               
+
                public static DateTime GetLastAccessTimeUtc (string path)
                {
                        return GetLastAccessTime (path).ToUniversalTime ();
                }
-                     
+
                public static DateTime GetLastWriteTime (string path)
                {
                        return File.GetLastWriteTime (path);
@@ -337,15 +348,15 @@ namespace System.IO
                static bool IsRootDirectory (string path)
                {
                        // Unix
-                      if (Path.DirectorySeparatorChar == '/' && path == "/")
-                              return true;
+                       if (Path.DirectorySeparatorChar == '/' && path == "/")
+                               return true;
 
-                      // Windows
-                      if (Path.DirectorySeparatorChar == '\\')
-                              if (path.Length == 3 && path.EndsWith (":\\"))
-                                      return true;
+                       // Windows
+                       if (Path.DirectorySeparatorChar == '\\')
+                               if (path.Length == 3 && path.EndsWith (":\\"))
+                                       return true;
 
-                      return false;
+                       return false;
                }
 
                public static DirectoryInfo GetParent (string path)
@@ -368,34 +379,41 @@ namespace System.IO
                        return new DirectoryInfo (parent_name);
                }
 
-               public static void Move (string src, string dest)
+               public static void Move (string sourceDirName, string destDirName)
                {
-                       if (src == null)
-                               throw new ArgumentNullException ("src");
+                       if (sourceDirName == null)
+                               throw new ArgumentNullException ("sourceDirName");
 
-                       if (dest == null)
-                               throw new ArgumentNullException ("dest");
+                       if (destDirName == null)
+                               throw new ArgumentNullException ("destDirName");
 
-                       if (src.Trim () == "" || src.IndexOfAny (Path.InvalidPathChars) != -1)
-                               throw new ArgumentException ("Invalid source directory name: " + src, "src");
+                       if (sourceDirName.Trim () == "" || sourceDirName.IndexOfAny (Path.InvalidPathChars) != -1)
+                               throw new ArgumentException ("Invalid source directory name: " + sourceDirName, "sourceDirName");
 
-                       if (dest.Trim () == "" || dest.IndexOfAny (Path.InvalidPathChars) != -1)
-                               throw new ArgumentException ("Invalid target directory name: " + dest, "dest");
+                       if (destDirName.Trim () == "" || destDirName.IndexOfAny (Path.InvalidPathChars) != -1)
+                               throw new ArgumentException ("Invalid target directory name: " + destDirName, "destDirName");
 
-                       if (src == dest)
-                               throw new IOException ("Source directory cannot be same as a target directory.");
+                       if (sourceDirName == destDirName)
+                               throw new IOException ("Source and destination path must be different.");
 
-                       if (Exists (dest))
-                               throw new IOException (dest + " already exists.");
+                       if (Exists (destDirName))
+                               throw new IOException (destDirName + " already exists.");
 
-                       if (!Exists (src))
-                               throw new DirectoryNotFoundException (src + " does not exist");
+                       if (!Exists (sourceDirName) && !File.Exists (sourceDirName))
+                               throw new DirectoryNotFoundException (sourceDirName + " does not exist");
 
                        MonoIOError error;
-                       if (!MonoIO.MoveFile (src, dest, out error))
+                       if (!MonoIO.MoveFile (sourceDirName, destDirName, out error))
                                throw MonoIO.GetException (error);
                }
 
+#if NET_2_0
+               public static void SetAccessControl (string path, DirectorySecurity directorySecurity)
+               {
+                       throw new NotImplementedException ();
+               }
+#endif
+
                public static void SetCreationTime (string path, DateTime creation_time)
                {
                        File.SetCreationTime (path, creation_time);
@@ -526,4 +544,3 @@ namespace System.IO
 #endif
        }
 }
-