From 455088af6956c80d7c1c0a93eb976bba12291419 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 19 Apr 2019 17:35:01 +0100 Subject: [PATCH] Add ErrorMessage event to ATA dumper. --- DiscImageChef.Core/Delegates.cs | 5 ++++ DiscImageChef.Core/Devices/Dumping/ATA.cs | 30 ++++++++++++---------- DiscImageChef.Core/Devices/Dumping/Dump.cs | 1 + DiscImageChef/Progress.cs | 5 ++++ 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/DiscImageChef.Core/Delegates.cs b/DiscImageChef.Core/Delegates.cs index 22c977f14..4c8431238 100644 --- a/DiscImageChef.Core/Delegates.cs +++ b/DiscImageChef.Core/Delegates.cs @@ -97,4 +97,9 @@ namespace DiscImageChef.Core /// Updates a status indicator /// public delegate void UpdateStatusHandler(string text); + + /// + /// Shows an error message + /// + public delegate void ErrorMessageHandler(string text); } \ No newline at end of file diff --git a/DiscImageChef.Core/Devices/Dumping/ATA.cs b/DiscImageChef.Core/Devices/Dumping/ATA.cs index 4025e698f..c2f95aad5 100644 --- a/DiscImageChef.Core/Devices/Dumping/ATA.cs +++ b/DiscImageChef.Core/Devices/Dumping/ATA.cs @@ -88,12 +88,10 @@ namespace DiscImageChef.Core.Devices.Dumping if(dumpRaw) { - DicConsole.ErrorWriteLine("Raw dumping not yet supported in ATA devices."); - - if(force) DicConsole.ErrorWriteLine("Continuing..."); + if(force) ErrorMessage?.Invoke("Raw dumping not yet supported in ATA devices, continuing..."); else { - DicConsole.ErrorWriteLine("Aborting..."); + DicConsole.ErrorWriteLine("Raw dumping not yet supported in ATA devices, aborting..."); return; } } @@ -135,7 +133,7 @@ namespace DiscImageChef.Core.Devices.Dumping if(ataReader.GetBlockSize()) { dumpLog.WriteLine("ERROR: Cannot get block size: {0}.", ataReader.ErrorMessage); - DicConsole.ErrorWriteLine(ataReader.ErrorMessage); + ErrorMessage(ataReader.ErrorMessage); return; } @@ -144,7 +142,7 @@ namespace DiscImageChef.Core.Devices.Dumping if(ataReader.FindReadCommand()) { dumpLog.WriteLine("ERROR: Cannot find correct read command: {0}.", ataReader.ErrorMessage); - DicConsole.ErrorWriteLine(ataReader.ErrorMessage); + ErrorMessage(ataReader.ErrorMessage); return; } @@ -152,7 +150,7 @@ namespace DiscImageChef.Core.Devices.Dumping if(ataReader.GetBlocksToRead()) { dumpLog.WriteLine("ERROR: Cannot get blocks to read: {0}.", ataReader.ErrorMessage); - DicConsole.ErrorWriteLine(ataReader.ErrorMessage); + ErrorMessage(ataReader.ErrorMessage); return; } @@ -193,7 +191,7 @@ namespace DiscImageChef.Core.Devices.Dumping { ret = false; dumpLog.WriteLine("Output format does not support USB descriptors."); - DicConsole.ErrorWriteLine("Output format does not support USB descriptors."); + ErrorMessage("Output format does not support USB descriptors."); } if(dev.IsPcmcia && dev.Cis != null && @@ -201,22 +199,28 @@ namespace DiscImageChef.Core.Devices.Dumping { ret = false; dumpLog.WriteLine("Output format does not support PCMCIA CIS descriptors."); - DicConsole.ErrorWriteLine("Output format does not support PCMCIA CIS descriptors."); + ErrorMessage("Output format does not support PCMCIA CIS descriptors."); } if(!outputPlugin.SupportedMediaTags.Contains(MediaTagType.ATA_IDENTIFY)) { ret = false; dumpLog.WriteLine("Output format does not support ATA IDENTIFY."); - DicConsole.ErrorWriteLine("Output format does not support ATA IDENTIFY."); + ErrorMessage("Output format does not support ATA IDENTIFY."); } if(!ret) { dumpLog.WriteLine("Several media tags not supported, {0}continuing...", force ? "" : "not "); - DicConsole.ErrorWriteLine("Several media tags not supported, {0}continuing...", - force ? "" : "not "); - if(!force) return; + if(force) + { + ErrorMessage("Several media tags not supported, continuing..."); + } + else + { + DicConsole.ErrorWriteLine("Several media tags not supported, not continuing..."); + return; + } } ret = outputPlugin.Create(outputPath, diff --git a/DiscImageChef.Core/Devices/Dumping/Dump.cs b/DiscImageChef.Core/Devices/Dumping/Dump.cs index 2882ccff8..8f475341b 100644 --- a/DiscImageChef.Core/Devices/Dumping/Dump.cs +++ b/DiscImageChef.Core/Devices/Dumping/Dump.cs @@ -3,5 +3,6 @@ namespace DiscImageChef.Core.Devices.Dumping public partial class Dump { public event UpdateStatusHandler UpdateStatus; + public event ErrorMessageHandler ErrorMessage; } } \ No newline at end of file diff --git a/DiscImageChef/Progress.cs b/DiscImageChef/Progress.cs index 0fa5a4564..99428112b 100644 --- a/DiscImageChef/Progress.cs +++ b/DiscImageChef/Progress.cs @@ -77,5 +77,10 @@ namespace DiscImageChef { DicConsole.WriteLine(text); } + + internal static void ErrorMessage(string text) + { + DicConsole.ErrorWriteLine(text); + } } } \ No newline at end of file