Changeset 2222
- Timestamp:
- 7/10/2010 8:36:36 AM (19 months ago)
- Location:
- trunk/eraser/Eraser.DefaultPlugins
- Files:
-
- 3 edited
-
ErasureTargets/FileSystemObjectErasureTarget.cs (modified) (1 diff)
-
ErasureTargets/FolderErasureTarget.cs (modified) (3 diffs)
-
FileSystems/Windows.cs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FileSystemObjectErasureTarget.cs
r2153 r2222 91 91 /// </summary> 92 92 /// <param name="info">The directory to look files in.</param> 93 /// <returns>A list of files found in the directory matching the IncludeMask 94 /// property.</returns> 93 /// <returns>A list of files found in the directory.</returns> 94 /// <remarks>This function does not recurse into directories which are 95 /// reparse points.</remarks> 95 96 protected static FileInfo[] GetFiles(DirectoryInfo info) 96 97 { 97 98 List<FileInfo> result = new List<FileInfo>(); 98 if (info.Exists )99 if (info.Exists && (info.Attributes & FileAttributes.ReparsePoint) == 0) 99 100 { 100 101 try -
trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FolderErasureTarget.cs
r2170 r2222 176 176 0.0f, S._("Removing folders..."))); 177 177 178 //Remove all subfolders which are empty. 179 FileSystem fsManager = ManagerLibrary.Instance.FileSystemRegistrar[ 180 VolumeInfo.FromMountPoint(Path)]; 178 //Erase all subdirectories which are not reparse points. 181 179 DirectoryInfo directory = new DirectoryInfo(Path); 180 if ((directory.Attributes & FileAttributes.ReparsePoint) == 0) 182 181 foreach (DirectoryInfo subDir in directory.GetDirectories()) 183 182 EraseFolder(subDir, step); 184 183 184 //Does the user want this directory to be erased if there are no more 185 //entries within it? 185 186 if (DeleteIfEmpty) 186 187 { … … 198 199 directory.GetFiles("*", SearchOption.AllDirectories).Length == 0) 199 200 { 201 FileSystem fsManager = ManagerLibrary.Instance.FileSystemRegistrar[ 202 VolumeInfo.FromMountPoint(Path)]; 200 203 fsManager.DeleteFolder(directory); 201 204 } … … 205 208 private void EraseFolder(DirectoryInfo info, ProgressManager progress) 206 209 { 210 //Skip all symbolic links and junctions as we want to retain the 211 //contents of those directories. 212 if ((info.Attributes & FileAttributes.ReparsePoint) != 0) 213 return; 214 215 //Iterate over each directory and erase the subdirectories. 207 216 foreach (DirectoryInfo subDir in info.GetDirectories()) 208 217 EraseFolder(subDir, progress); 218 219 //Public progress updates. 209 220 OnProgressChanged(this, new ProgressChangedEventArgs(progress, 210 221 new TaskProgressChangedEventArgs(info.FullName, 0, 0))); 211 222 223 //Ensure that the current directory is empty before deleting. 212 224 FileSystemInfo[] files = info.GetFileSystemInfos(); 213 225 if (files.Length == 0) -
trunk/eraser/Eraser.DefaultPlugins/FileSystems/Windows.cs
r2212 r2222 63 63 "not empty.")); 64 64 65 //TODO: check for reparse points 66 foreach (DirectoryInfo dir in info.GetDirectories()) 67 DeleteFolder(dir); 68 foreach (FileInfo file in info.GetFiles()) 69 DeleteFile(file); 65 if ((info.Attributes & FileAttributes.ReparsePoint) != 0) 66 { 67 foreach (DirectoryInfo dir in info.GetDirectories()) 68 DeleteFolder(dir); 69 foreach (FileInfo file in info.GetFiles()) 70 DeleteFile(file); 71 } 70 72 71 73 DeleteFileSystemInfo(info);
Note: See TracChangeset
for help on using the changeset viewer.
