Changeset 1865
- Timestamp:
- 3/1/2010 6:37:40 AM (3 years ago)
- Location:
- trunk/eraser6
- Files:
-
- 2 edited
-
Eraser.DefaultPlugins/FileSystems/Fat.cs (modified) (1 diff)
-
Eraser.Util/VolumeInfo.cs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/eraser6/Eraser.DefaultPlugins/FileSystems/Fat.cs
r1802 r1865 87 87 } 88 88 89 using (VolumeLock volumeLock = info.LockVolume(stream))89 try 90 90 { 91 while (eraseQueue.Count != 0)91 using (VolumeLock volumeLock = info.LockVolume(stream)) 92 92 { 93 if (callback != null) 94 callback(directoriesCleaned, directoriesCleaned + eraseQueue.Count); 93 while (eraseQueue.Count != 0) 94 { 95 if (callback != null) 96 callback(directoriesCleaned, directoriesCleaned + eraseQueue.Count); 95 97 96 FatDirectoryBase currentDir = api.LoadDirectory(eraseQueue[0].FullName);97 eraseQueue.RemoveAt(0);98 FatDirectoryBase currentDir = api.LoadDirectory(eraseQueue[0].FullName); 99 eraseQueue.RemoveAt(0); 98 100 99 //Queue the subfolders in this directory100 foreach (KeyValuePair<string, FatDirectoryEntry> entry in currentDir.Items)101 if (entry.Value.EntryType == FatDirectoryEntryType.Directory)102 {103 //Check that we don't have the same cluster queued twice (e.g. for104 //long/8.3 file names)105 if (eraseQueueClusters.Contains(entry.Value.Cluster))106 continue;101 //Queue the subfolders in this directory 102 foreach (KeyValuePair<string, FatDirectoryEntry> entry in currentDir.Items) 103 if (entry.Value.EntryType == FatDirectoryEntryType.Directory) 104 { 105 //Check that we don't have the same cluster queued twice (e.g. for 106 //long/8.3 file names) 107 if (eraseQueueClusters.Contains(entry.Value.Cluster)) 108 continue; 107 109 108 eraseQueueClusters.Add(entry.Value.Cluster);109 eraseQueue.Add(entry.Value);110 }110 eraseQueueClusters.Add(entry.Value.Cluster); 111 eraseQueue.Add(entry.Value); 112 } 111 113 112 currentDir.ClearDeletedEntries(); 113 ++directoriesCleaned; 114 currentDir.ClearDeletedEntries(); 115 ++directoriesCleaned; 116 } 114 117 } 118 } 119 catch (SharingViolationException e) 120 { 121 Logger.Log(S._("Could not erase directory entries on the volume {0} because" + 122 "the volume is currently in use.")); 115 123 } 116 124 } -
trunk/eraser6/Eraser.Util/VolumeInfo.cs
r1843 r1865 727 727 { 728 728 if (i > 100) 729 throw new IOException("Could not lock volume.");729 throw Win32ErrorCode.GetExceptionForWin32Error(Marshal.GetLastWin32Error())); 730 730 System.Threading.Thread.Sleep(100); 731 731 }
Note: See TracChangeset
for help on using the changeset viewer.
