Changeset 2338
- Timestamp:
- 10/30/2011 1:21:08 AM (7 months ago)
- Location:
- branches/eraser6/6.0
- Files:
-
- 7 edited
-
. (modified) (1 prop)
-
Eraser.Manager/DirectExecutor.cs (modified) (3 diffs)
-
Eraser.Manager/Strings.en.resx (modified) (2 diffs)
-
Eraser.Manager/Strings.it.resx (modified) (2 diffs)
-
Eraser.Manager/Strings.nl.resx (modified) (2 diffs)
-
Eraser.Manager/Strings.pl.resx (modified) (2 diffs)
-
Eraser.Manager/Strings.resx (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eraser6/6.0
- Property svn:mergeinfo changed
/trunk/eraser merged: 2335-2337
- Property svn:mergeinfo changed
-
branches/eraser6/6.0/Eraser.Manager/DirectExecutor.cs
r2331 r2338 768 768 info.IsReadOnly = false; 769 769 770 //Make sure the file does not have any attributes which may affect771 //the erasure process772 if ((info.Attributes & FileAttributes.Compressed) != 0 ||773 (info.Attributes & FileAttributes.Encrypted) != 0 ||774 (info.Attributes & FileAttributes.SparseFile) != 0)775 {776 //Log the error777 task.Log.LastSessionEntries.Add(new LogEntry(S._("The file {0} could " +778 "not be erased because the file was either compressed, encrypted or " +779 "a sparse file.", info.FullName), LogLevel.Error));780 continue;781 }782 783 770 long itemWritten = 0; 784 fsManager.EraseFileSystemObject(info, method,771 TryEraseFilesystemObject(task, method, info, fsManager, 785 772 delegate(long lastWritten, long totalData, int currentPass) 786 773 { … … 811 798 info.FullName), LogLevel.Error)); 812 799 } 813 catch (FileLoadException) 814 { 815 if (!ManagerLibrary.Settings.ForceUnlockLockedFiles) 816 throw; 817 818 List<System.Diagnostics.Process> processes = new List<System.Diagnostics.Process>(); 819 foreach (OpenHandle handle in OpenHandle.Items) 820 if (handle.Path == paths[i]) 821 processes.Add(System.Diagnostics.Process.GetProcessById(handle.ProcessId)); 822 823 string lockedBy = null; 824 if (processes.Count > 0) 825 { 826 StringBuilder processStr = new StringBuilder(); 827 foreach (System.Diagnostics.Process process in processes) 828 { 829 try 830 { 831 processStr.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, 832 "{0}, ", process.MainModule.FileName); 833 } 834 catch (System.ComponentModel.Win32Exception) 835 { 836 } 837 } 838 839 lockedBy = S._("(locked by {0})", processStr.ToString().Remove(processStr.Length - 2)); 840 } 841 842 task.Log.LastSessionEntries.Add(new LogEntry(S._( 843 "Could not force closure of file \"{0}\" {1}", paths[i], 844 lockedBy == null ? string.Empty : lockedBy).Trim(), LogLevel.Error)); 800 catch (FileLoadException e) 801 { 802 task.Log.LastSessionEntries.Add(new LogEntry(e.Message, LogLevel.Error)); 845 803 } 846 804 finally … … 922 880 } 923 881 882 private void TryEraseFilesystemObject(Task task, ErasureMethod method, StreamInfo info, 883 FileSystem fsManager, ErasureMethodProgressFunction progressCallback) 884 { 885 for (int i = 0; ; ++i) 886 { 887 try 888 { 889 //Make sure the file does not have any attributes which may affect 890 //the erasure process 891 if ((info.Attributes & FileAttributes.Compressed) != 0 || 892 (info.Attributes & FileAttributes.Encrypted) != 0 || 893 (info.Attributes & FileAttributes.SparseFile) != 0) 894 { 895 //Log the error 896 task.Log.LastSessionEntries.Add(new LogEntry(S._("The file {0} could " + 897 "not be erased because the file was either compressed, encrypted or " + 898 "a sparse file.", info.FullName), LogLevel.Error)); 899 return; 900 } 901 902 fsManager.EraseFileSystemObject(info, method, progressCallback); 903 return; 904 } 905 catch (FileLoadException e) 906 { 907 if (!ManagerLibrary.Settings.ForceUnlockLockedFiles) 908 throw; 909 910 //Try closing all open handles. If it succeeds, we can run the erase again. 911 List<System.Diagnostics.Process> processes = new List<System.Diagnostics.Process>(); 912 bool closed = true; 913 foreach (OpenHandle handle in OpenHandle.Items) 914 if (handle.Path == info.File.FullName) 915 { 916 processes.Add(System.Diagnostics.Process.GetProcessById(handle.ProcessId)); 917 closed = closed && handle.Close(); 918 } 919 920 //To prevent Eraser from deadlocking, we will only attempt this once. Some 921 //programs may be aggressive and keep a handle open in a tight loop. 922 if (!closed || i >= 1) 923 { 924 string lockedBy = null; 925 if (processes.Count > 0) 926 { 927 StringBuilder processStr = new StringBuilder(); 928 foreach (System.Diagnostics.Process process in processes) 929 { 930 try 931 { 932 processStr.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, 933 "{0}, ", process.MainModule.FileName); 934 } 935 catch (System.ComponentModel.Win32Exception) 936 { 937 } 938 } 939 940 lockedBy = S._("(locked by {0})", processStr.ToString().Remove(processStr.Length - 2)); 941 } 942 943 throw new FileLoadException(S._( 944 "Could not force closure of file \"{0}\" {1}", info.File.FullName, 945 lockedBy == null ? string.Empty : lockedBy).Trim(), info.File.FullName, 946 e); 947 } 948 } 949 } 950 } 951 924 952 /// <summary> 925 953 /// The thread object. -
branches/eraser6/6.0/Eraser.Manager/Strings.en.resx
r2169 r2338 157 157 <value>The file {0} was not erased as the file does not exist.</value> 158 158 </data> 159 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 160 <value>The file {0} could not be erased because the file's permissions prevent access to the file.</value> 161 </data> 162 <data name="Removing folders..." xml:space="preserve"> 163 <value>Removing folders...</value> 164 </data> 165 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve"> 166 <value>The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder.</value> 167 </data> 168 <data name="Emptying recycle bin..." xml:space="preserve"> 169 <value>Emptying recycle bin...</value> 170 </data> 159 171 <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 160 172 <value>The file {0} could not be erased because the file was either compressed, encrypted or a sparse file.</value> 161 173 </data> 162 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve">163 <value>The file {0} could not be erased because the file's permissions prevent access to the file.</value>164 </data>165 174 <data name="(locked by {0})" xml:space="preserve"> 166 175 <value>(locked by {0})</value> … … 169 178 <value>Could not force closure of file \"{0}\" {1}</value> 170 179 </data> 171 <data name="Removing folders..." xml:space="preserve">172 <value>Removing folders...</value>173 </data>174 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve">175 <value>The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder.</value>176 </data>177 <data name="Emptying recycle bin..." xml:space="preserve">178 <value>Emptying recycle bin...</value>179 </data>180 180 <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 181 181 <value>EntropySource GUID not found: {0}</value> -
branches/eraser6/6.0/Eraser.Manager/Strings.it.resx
r2169 r2338 157 157 <value>Il file {0} non è stato pulito perchè il file non esiste.</value> 158 158 </data> 159 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 160 <value>Il file {0} non può essere pulito perchè i permessi su di esso ne impediscono l'accesso.</value> 161 </data> 162 <data name="Removing folders..." xml:space="preserve"> 163 <value>Rimozione cartelle...</value> 164 </data> 165 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve"> 166 <value>(Untranslated)</value> 167 </data> 168 <data name="Emptying recycle bin..." xml:space="preserve"> 169 <value>Pulizia del cestino...</value> 170 </data> 159 171 <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 160 172 <value>Il file {0} non può essere pulito perchè è compresso, crittato o distribuito.</value> 161 173 </data> 162 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve">163 <value>Il file {0} non può essere pulito perchè i permessi su di esso ne impediscono l'accesso.</value>164 </data>165 174 <data name="(locked by {0})" xml:space="preserve"> 166 175 <value>(Untranslated)</value> … … 168 177 <data name="Could not force closure of file \"{0}\" {1}" xml:space="preserve"> 169 178 <value>(Untranslated)</value> 170 </data>171 <data name="Removing folders..." xml:space="preserve">172 <value>Rimozione cartelle...</value>173 </data>174 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve">175 <value>(Untranslated)</value>176 </data>177 <data name="Emptying recycle bin..." xml:space="preserve">178 <value>Pulizia del cestino...</value>179 179 </data> 180 180 <data name="EntropySource GUID not found: {0}" xml:space="preserve"> -
branches/eraser6/6.0/Eraser.Manager/Strings.nl.resx
r2169 r2338 157 157 <value>(Untranslated)</value> 158 158 </data> 159 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 160 <value>(Untranslated)</value> 161 </data> 162 <data name="Removing folders..." xml:space="preserve"> 163 <value>(Untranslated)</value> 164 </data> 165 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve"> 166 <value>(Untranslated)</value> 167 </data> 168 <data name="Emptying recycle bin..." xml:space="preserve"> 169 <value>(Untranslated)</value> 170 </data> 159 171 <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 160 172 <value>(Untranslated)</value> 161 173 </data> 162 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve">163 <value>(Untranslated)</value>164 </data>165 174 <data name="(locked by {0})" xml:space="preserve"> 166 175 <value>(Untranslated)</value> … … 169 178 <value>(Untranslated)</value> 170 179 </data> 171 <data name="Removing folders..." xml:space="preserve">172 <value>(Untranslated)</value>173 </data>174 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve">175 <value>(Untranslated)</value>176 </data>177 <data name="Emptying recycle bin..." xml:space="preserve">178 <value>(Untranslated)</value>179 </data>180 180 <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 181 181 <value>(Untranslated)</value> -
branches/eraser6/6.0/Eraser.Manager/Strings.pl.resx
r2169 r2338 157 157 <value>Plik {0} nie został wymazany, bo nie istnieje.</value> 158 158 </data> 159 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 160 <value>Plik {0} nie mógł być wymazany z powodu ograniczonego prawa dostępu do pliku.</value> 161 </data> 162 <data name="Removing folders..." xml:space="preserve"> 163 <value>Usuwanie katalogów...</value> 164 </data> 165 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve"> 166 <value>(Untranslated)</value> 167 </data> 168 <data name="Emptying recycle bin..." xml:space="preserve"> 169 <value>Opróżnianie kosza...</value> 170 </data> 159 171 <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 160 172 <value>Plik {0} nie mógł być wymazany, bo był skompresowany, zaszyfrowany lub rozrzedzony.</value> 161 173 </data> 162 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve">163 <value>Plik {0} nie mógł być wymazany z powodu ograniczonego prawa dostępu do pliku.</value>164 </data>165 174 <data name="(locked by {0})" xml:space="preserve"> 166 175 <value>(zablokowane przez {0})</value> … … 169 178 <value>Nie można wymusić zamknięcia pliku \"{0}\" {1}</value> 170 179 </data> 171 <data name="Removing folders..." xml:space="preserve">172 <value>Usuwanie katalogów...</value>173 </data>174 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve">175 <value>(Untranslated)</value>176 </data>177 <data name="Emptying recycle bin..." xml:space="preserve">178 <value>Opróżnianie kosza...</value>179 </data>180 180 <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 181 181 <value>Nie znaleziono źródła entropii GUID: {0}</value> -
branches/eraser6/6.0/Eraser.Manager/Strings.resx
r2169 r2338 157 157 <value>The file {0} was not erased as the file does not exist.</value> 158 158 </data> 159 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve"> 160 <value>The file {0} could not be erased because the file's permissions prevent access to the file.</value> 161 </data> 162 <data name="Removing folders..." xml:space="preserve"> 163 <value>Removing folders...</value> 164 </data> 165 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve"> 166 <value>The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder.</value> 167 </data> 168 <data name="Emptying recycle bin..." xml:space="preserve"> 169 <value>Emptying recycle bin...</value> 170 </data> 159 171 <data name="The file {0} could not be erased because the file was either compressed, encrypted or a sparse file." xml:space="preserve"> 160 172 <value>The file {0} could not be erased because the file was either compressed, encrypted or a sparse file.</value> 161 173 </data> 162 <data name="The file {0} could not be erased because the file's permissions prevent access to the file." xml:space="preserve">163 <value>The file {0} could not be erased because the file's permissions prevent access to the file.</value>164 </data>165 174 <data name="(locked by {0})" xml:space="preserve"> 166 175 <value>(locked by {0})</value> … … 169 178 <value>Could not force closure of file \"{0}\" {1}</value> 170 179 </data> 171 <data name="Removing folders..." xml:space="preserve">172 <value>Removing folders...</value>173 </data>174 <data name="The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder." xml:space="preserve">175 <value>The folder {0} could not be deleted because the folder's permissions prevents the deletion of the folder.</value>176 </data>177 <data name="Emptying recycle bin..." xml:space="preserve">178 <value>Emptying recycle bin...</value>179 </data>180 180 <data name="EntropySource GUID not found: {0}" xml:space="preserve"> 181 181 <value>EntropySource GUID not found: {0}</value>
Note: See TracChangeset
for help on using the changeset viewer.
