Merge branch 'master' of http://github.com/mono/mono
[mono.git] / mcs / class / corlib / System.Security.Permissions / FileIOPermissionAttribute.cs
index aa7987a8bd2371efb52f85c1cb6ddfb36a0fc4bd..5f7fbff2d8633920d2992246abc814cf2e67a99b 100644 (file)
@@ -3,14 +3,11 @@
 //
 // Authors
 //     Duncan Mak <duncan@ximian.com>
-//     Sebastien Pouliot <spouliot@motus.com>
+//     Sebastien Pouliot  <sebastien@ximian.com>
 //
 // (C) 2002 Ximian, Inc. http://www.ximian.com
 // Portions Copyright (C) 2003 Motus Technologies (http://www.motus.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
+using System.Runtime.InteropServices;
 
 namespace System.Security.Permissions {
 
+       [ComVisible (true)]
        [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
                         AttributeTargets.Struct | AttributeTargets.Constructor |
                         AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
@@ -47,16 +45,21 @@ namespace System.Security.Permissions {
                private string path;
                private string read;
                private string write;
-               
+               private FileIOPermissionAccess allFiles;
+               private FileIOPermissionAccess allLocalFiles;
+               private string changeAccessControl;
+               private string viewAccessControl;
+               //private string viewAndModify;
+
                // Constructor
-               public FileIOPermissionAttribute (SecurityAction action) : base (action) {}
+               public FileIOPermissionAttribute (SecurityAction action) : base (action)
+               {
+               }
                
                // Properties
-               public string All
-               {
-#if ! NET_1_0
+               [Obsolete ("use newer properties")]
+               public string All {
                        get { throw new NotSupportedException ("All"); }
-#endif
                        set {
                                append = value; 
                                path = value;
@@ -65,33 +68,61 @@ namespace System.Security.Permissions {
                        }
                }
 
-               public string Append
-               {
+               public string Append {
                        get { return append; }
                        set { append = value; }
                }
 
-               public string PathDiscovery
-               {
+               public string PathDiscovery {
                        get { return path; }
                        set { path = value; }
                }
 
-               public string Read
-               {
+               public string Read {
                        get { return read; }
                        set { read = value; }
                }                                   
                
-               public string Write
-               {
+               public string Write {
                        get { return write; }
                        set { write = value; }
                }
-                        
+
+               public FileIOPermissionAccess AllFiles {
+                       get { return allFiles; }
+                       set { allFiles = value; }
+               }
+
+               public FileIOPermissionAccess AllLocalFiles {
+                       get { return allLocalFiles; }
+                       set { allLocalFiles = value; }
+               }
+
+               public string ChangeAccessControl {
+                       get { return changeAccessControl; }
+                       set { changeAccessControl = value; }
+               }
+
+               public string ViewAccessControl {
+                       get { return viewAccessControl; }
+                       set { viewAccessControl = value; }
+               }
+
+               public string ViewAndModify {
+                       get { throw new NotSupportedException (); }     // as documented
+                       set {
+                               append = value;
+                               path = value;
+                               read = value;
+                               write = value;
+                       }
+               }
                // Methods
                public override IPermission CreatePermission ()
                {
+#if NET_2_1
+                       return null;
+#else
                        FileIOPermission perm = null;
                        if (this.Unrestricted)
                                perm = new FileIOPermission (PermissionState.Unrestricted);
@@ -107,6 +138,7 @@ namespace System.Security.Permissions {
                                        perm.AddPathList (FileIOPermissionAccess.Write, write);
                        }
                        return perm;
+#endif
                }
        }
 }