X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.IO%2FFileSystemInfo.cs;h=02c59c632cd468690fa9ae65ee637902e42758ee;hb=3b3c977ed04b5be920643f605988d6e149a5fc5a;hp=b1ac2b83c962489a16d6b57d06e5bb1f6486e857;hpb=38f5601f7d35b9a8a29b34bbf7039ce1adc22553;p=mono.git diff --git a/mcs/class/corlib/System.IO/FileSystemInfo.cs b/mcs/class/corlib/System.IO/FileSystemInfo.cs index b1ac2b83c96..02c59c632cd 100644 --- a/mcs/class/corlib/System.IO/FileSystemInfo.cs +++ b/mcs/class/corlib/System.IO/FileSystemInfo.cs @@ -10,14 +10,45 @@ // //------------------------------------------------------------------------------ -using System; +// +// 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 +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + using System.Runtime.InteropServices; using System.Runtime.Serialization; +using System.Security.Permissions; namespace System.IO { [Serializable] + [FileIOPermission (SecurityAction.InheritanceDemand, Unrestricted = true)] +#if NET_2_0 + [ComVisible (true)] +#endif +#if NET_2_1 + public abstract class FileSystemInfo { +#else public abstract class FileSystemInfo : MarshalByRefObject, ISerializable { + #region Implementation of ISerializable [ComVisible(false)] @@ -28,7 +59,7 @@ namespace System.IO { } #endregion Implementation of ISerializable - +#endif // public properties public abstract bool Exists { get; } @@ -59,7 +90,8 @@ namespace System.IO { if (!MonoIO.SetFileAttributes (FullName, value, out error)) - throw MonoIO.GetException (error); + throw MonoIO.GetException (FullName, + error); Refresh (true); } } @@ -77,11 +109,13 @@ namespace System.IO { if (!MonoIO.SetFileTime (FullName, filetime, -1, -1, out error)) - throw MonoIO.GetException (error); + throw MonoIO.GetException (FullName, + error); Refresh (true); } } + [ComVisible(false)] public DateTime CreationTimeUtc { get { return CreationTime.ToUniversalTime (); @@ -106,11 +140,13 @@ namespace System.IO { if (!MonoIO.SetFileTime (FullName, -1, filetime, -1, out error)) - throw MonoIO.GetException (error); + throw MonoIO.GetException (FullName, + error); Refresh (true); } } + [ComVisible(false)] public DateTime LastAccessTimeUtc { get { Refresh (false); @@ -135,11 +171,13 @@ namespace System.IO { if (!MonoIO.SetFileTime (FullName, -1, -1, filetime, out error)) - throw MonoIO.GetException (error); + throw MonoIO.GetException (FullName, + error); Refresh (true); } } + [ComVisible(false)] public DateTime LastWriteTimeUtc { get { Refresh (false); @@ -192,6 +230,10 @@ namespace System.IO { MonoIOError error; MonoIO.GetFileStat (FullName, out stat, out error); + /* Don't throw on error here, too much other + * stuff relies on it not doing so... + */ + valid = true; InternalRefresh (); @@ -204,9 +246,11 @@ namespace System.IO { internal void CheckPath (string path) { if (path == null) - throw new ArgumentNullException (); + throw new ArgumentNullException ("path"); + if (path.Length == 0) + throw new ArgumentException ("An empty file name is not valid."); if (path.IndexOfAny (Path.InvalidPathChars) != -1) - throw new ArgumentException ("Invalid characters in path."); + throw new ArgumentException ("Illegal characters in path."); } internal MonoIOStat stat;