Merge pull request #637 from LogosBible/enetdown
[mono.git] / mcs / class / corlib / System.IO / File.cs
index 0165d33c551dd47753cd80b64a0df70f96201f07..c4ed76b34bfb513728eed443ef12e521b1e1dc03 100644 (file)
@@ -124,14 +124,15 @@ namespace System.IO
                                FileShare.None, bufferSize);
                }
 
-#if !NET_2_1
                [MonoLimitation ("FileOptions are ignored")]
                public static FileStream Create (string path, int bufferSize,
                                                 FileOptions options)
                {
-                       return Create (path, bufferSize, options, null);
+                       return new FileStream (path, FileMode.Create, FileAccess.ReadWrite,
+                               FileShare.None, bufferSize, options);
                }
                
+#if !NET_2_1
                [MonoLimitation ("FileOptions and FileSecurity are ignored")]
                public static FileStream Create (string path, int bufferSize,
                                                 FileOptions options,
@@ -188,12 +189,16 @@ namespace System.IO
 #if !NET_2_1
                public static FileSecurity GetAccessControl (string path)
                {
-                       throw new NotImplementedException ();
+                       // AccessControlSections.Audit requires special permissions.
+                       return GetAccessControl (path,
+                                                AccessControlSections.Owner |
+                                                AccessControlSections.Group |
+                                                AccessControlSections.Access);
                }
                
                public static FileSecurity GetAccessControl (string path, AccessControlSections includeSections)
                {
-                       throw new NotImplementedException ();
+                       return new FileSecurity (path, includeSections);
                }
 #endif
 
@@ -412,7 +417,10 @@ namespace System.IO
                public static void SetAccessControl (string path,
                                                     FileSecurity fileSecurity)
                {
-                       throw new NotImplementedException ();
+                       if (null == fileSecurity)
+                               throw new ArgumentNullException ("fileSecurity");
+
+                       fileSecurity.PersistModifications (path);
                }
 #endif
 
@@ -609,7 +617,7 @@ namespace System.IO
                        throw new NotSupportedException (Locale.GetText ("File encryption isn't supported on any file system."));
                }
 
-#if MOONLIGHT || NET_4_0 || MOBILE
+#if NET_4_0
                public static IEnumerable<string> ReadLines (string path)
                {
                        return ReadLines (File.OpenText (path));