using System.Security.Permissions;
using System.Text;
using System.Runtime.InteropServices;
-
-#if !MOONLIGHT
using System.Security.AccessControl;
-#endif
namespace System.IO
{
return CreateDirectoriesInternal (path);
}
-#if !MOONLIGHT
[MonoLimitation ("DirectorySecurity not implemented")]
public static DirectoryInfo CreateDirectory (string path, DirectorySecurity directorySecurity)
{
return(CreateDirectory (path));
}
-#endif
static DirectoryInfo CreateDirectoriesInternal (string path)
{
if (!success) {
/*
* FIXME:
- * In io-layer/io.c rmdir returns error_file_not_found if directory does not exists.
+ * In io-layer/io.c rmdir returns error_file_not_found if directory does not exist.
* So maybe this could be handled somewhere else?
*/
if (error == MonoIOError.ERROR_FILE_NOT_FOUND) {
return GetFileSystemEntries (path, searchPattern, FileAttributes.Directory, FileAttributes.Directory);
}
-#if !MOONLIGHT
public static string [] GetDirectories (string path, string searchPattern, SearchOption searchOption)
{
if (searchOption == SearchOption.TopDirectoryOnly)
foreach (string dir in GetDirectories (path))
GetDirectoriesRecurse (dir, searchPattern, all);
}
-#endif
public static string GetDirectoryRoot (string path)
{
return GetFileSystemEntries (path, searchPattern, FileAttributes.Directory, 0);
}
-#if !MOONLIGHT
public static string[] GetFiles (string path, string searchPattern, SearchOption searchOption)
{
if (searchOption == SearchOption.TopDirectoryOnly)
foreach (string dir in GetDirectories (path))
GetFilesRecurse (dir, searchPattern, all);
}
-#endif
public static string [] GetFileSystemEntries (string path)
{
throw MonoIO.GetException (error);
}
-#if !MOONLIGHT
public static void SetAccessControl (string path, DirectorySecurity directorySecurity)
{
if (null == directorySecurity)
directorySecurity.PersistModifications (path);
}
-#endif
public static void SetCreationTime (string path, DateTime creationTime)
{
return result;
}
-#if NET_4_0 || MOONLIGHT || MOBILE
+#if NET_4_0
public static string[] GetFileSystemEntries (string path, string searchPattern, SearchOption searchOption)
{
// Take the simple way home:
IntPtr handle;
MonoIOError error;
FileAttributes rattr;
-
string s = MonoIO.FindFirst (path, path_with_pattern, out rattr, out error, out handle);
try {
while (s != null) {
if (((rattr & FileAttributes.Directory) == 0) && rattr != 0)
rattr |= FileAttributes.Normal;
- if ((rattr & FileAttributes.ReparsePoint) == 0 && (rattr & kind) != 0)
+ if ((rattr & kind) != 0)
yield return s;
s = MonoIO.FindNext (handle, out rattr, out error);
try {
while (s != null) {
- if ((rattr & FileAttributes.Directory) != 0)
+ if ((rattr & FileAttributes.Directory) != 0 && (rattr & FileAttributes.ReparsePoint) == 0)
foreach (string child in EnumerateKind (s, searchPattern, searchOption, kind))
yield return child;
s = MonoIO.FindNext (handle, out rattr, out error);
#endif
-#if !MOONLIGHT
public static DirectorySecurity GetAccessControl (string path, AccessControlSections includeSections)
{
return new DirectorySecurity (path, includeSections);
AccessControlSections.Group |
AccessControlSections.Access);
}
-#endif
}
}