Changeset 1100


Ignore:
Timestamp:
6/3/2009 3:49:33 AM (6 years ago)
Author:
lowjoel
Message:

Better handling for FL16KB erase errors (when the specified file erasure method has been deleted/removed)

Location:
trunk/eraser6/Eraser.DefaultPlugins
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/eraser6/Eraser.DefaultPlugins/EraseFirstLast16KB.cs

    r1094 r1100  
    2828using System.IO; 
    2929using System.Threading; 
     30using System.Windows.Forms; 
    3031 
    3132namespace Eraser.DefaultPlugins 
     
    3536        public FirstLast16KB() 
    3637        { 
    37             //Try to retrieve the set erasure method 
    38             if (DefaultPlugin.Settings.FL16Method != Guid.Empty) 
    39                 method = ErasureMethodManager.GetInstance( 
    40                     DefaultPlugin.Settings.FL16Method); 
    41             else 
    42                 try 
    43                 { 
     38            try 
     39            { 
     40                //Try to retrieve the set erasure method 
     41                if (DefaultPlugin.Settings.FL16Method != Guid.Empty) 
     42                    method = ErasureMethodManager.GetInstance( 
     43                        DefaultPlugin.Settings.FL16Method); 
     44                else 
    4445                    method = ErasureMethodManager.GetInstance( 
    4546                        ManagerLibrary.Settings.DefaultFileErasureMethod); 
    46                 } 
    47                 catch (FatalException) 
    48                 { 
    49                 } 
    50  
    51             //If we have no default or we are the default then throw an exception 
    52             if (method == null || method.Guid == Guid) 
    53                 throw new InvalidOperationException(S._("The First/last 16KB erasure method " + 
     47            } 
     48            catch (FatalException) 
     49            { 
     50                MessageBox.Show(S._("The First/last 16KB erasure method " + 
    5451                    "requires another erasure method to erase the file.\n\nThis must " + 
    55                     "be set in the Plugin Settings dialog.")); 
     52                    "be set in the Plugin Settings dialog."), Name, MessageBoxButtons.OK, 
     53                    MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 
     54                    S.IsRightToLeft(null) ? MessageBoxOptions.RtlReading : 0); 
     55            } 
    5656        } 
    5757 
     
    7373        public override long CalculateEraseDataSize(ICollection<string> paths, long targetSize) 
    7474        { 
     75            //If we have no default or we are the default then throw an exception 
     76            if (method == null || method.Guid == Guid) 
     77                throw new InvalidOperationException(S._("The First/last 16KB erasure method " + 
     78                    "requires another erasure method to erase the file.\n\nThis must " + 
     79                    "be set in the Plugin Settings dialog.")); 
     80 
    7581            //Amount of data required to be written. 
    7682            long amountToWrite = 0; 
     
    9298            EraserMethodProgressFunction callback) 
    9399        { 
     100            //If we have no default or we are the default then throw an exception 
     101            if (method == null || method.Guid == Guid) 
     102                throw new InvalidOperationException(S._("The First/last 16KB erasure method " + 
     103                    "requires another erasure method to erase the file.\n\nThis must " + 
     104                    "be set in the Plugin Settings dialog.")); 
     105 
    94106            //Make sure that the erasureLength passed in here is the maximum value 
    95107            //for the size of long, since we don't want to write extra or write 
  • trunk/eraser6/Eraser.DefaultPlugins/Plugin.cs

    r989 r1100  
    5252            ErasureMethodManager.Register(new Pseudorandom());          //1 pass 
    5353            EraseCustom.RegisterAll(); 
     54            ErasureMethodManager.Register(new FirstLast16KB()); 
    5455 
    5556            PrngManager.Register(new RngCrypto()); 
    56  
    57             //Done last 
    58             try 
    59             { 
    60                 ErasureMethodManager.Register(new FirstLast16KB()); 
    61             } 
    62             catch (Exception) 
    63             { 
    64             } 
    6557        } 
    6658 
  • trunk/eraser6/Eraser.DefaultPlugins/SettingsForm.cs

    r1005 r1100  
    144144            DefaultPlugin.Settings.FL16Method = ((ErasureMethod)fl16MethodCmb.SelectedItem).Guid; 
    145145 
     146            //Remove the old methods. 
     147            foreach (Guid guid in removeCustomMethods) 
     148            { 
     149                customMethods.Remove(guid); 
     150                ErasureMethodManager.Unregister(guid); 
     151            } 
     152 
    146153            //Save the list of custom erasure methods 
    147154            DefaultPlugin.Settings.EraseCustom = customMethods; 
    148  
    149             //Remove the old methods. 
    150             foreach (Guid guid in removeCustomMethods) 
    151                 ErasureMethodManager.Unregister(guid); 
    152155 
    153156            //Update the Erasure method manager on the methods 
Note: See TracChangeset for help on using the changeset viewer.