Refactor IMediaImage.ReadSector(s)Long to return error status instead of buffer.

This commit is contained in:
2021-09-20 14:22:22 +01:00
parent 88aeda7240
commit a6690aa121
77 changed files with 1048 additions and 555 deletions

View File

@@ -961,16 +961,39 @@ namespace Aaru.Gui.ViewModels.Windows
bool result;
if(useLong)
if(sectorsToDo == 1)
{
sector = _inputFormat.ReadSectorLong(doneSectors);
result = outputFormat.WriteSectorLong(sector, doneSectors);
}
{
errno = sectorsToDo == 1 ? _inputFormat.ReadSectorLong(doneSectors, out sector)
: _inputFormat.ReadSectorsLong(doneSectors, sectorsToDo, out sector);
if(errno == ErrorNumber.NoError)
result = sectorsToDo == 1 ? outputFormat.WriteSectorLong(sector, doneSectors)
: outputFormat.WriteSectorsLong(sector, doneSectors, sectorsToDo);
else
{
sector = _inputFormat.ReadSectorsLong(doneSectors, sectorsToDo);
result = outputFormat.WriteSectorsLong(sector, doneSectors, sectorsToDo);
result = true;
if(ForceChecked)
{
warning = true;
AaruConsole.ErrorWriteLine("Error {0} reading sector {1}, continuing...", errno,
doneSectors);
}
else
{
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
GetMessageBoxStandardWindow("Error",
$"Error {errno} reading sector {doneSectors}, not continuing...",
icon: Icon.Error).
ShowDialog(_view));
AaruConsole.ErrorWriteLine("Error {0} reading sector {1}, not continuing...", errno,
doneSectors);
return;
}
}
}
else
{
errno = sectorsToDo == 1 ? _inputFormat.ReadSector(doneSectors, out sector)
@@ -1272,18 +1295,40 @@ namespace Aaru.Gui.ViewModels.Windows
bool result;
if(useLong)
if(sectorsToDo == 1)
{
sector = _inputFormat.ReadSectorLong(doneSectors + track.StartSector);
result = outputFormat.WriteSectorLong(sector, doneSectors + track.StartSector);
}
{
errno = sectorsToDo == 1
? _inputFormat.ReadSectorLong(doneSectors + track.StartSector, out sector)
: _inputFormat.ReadSectorsLong(doneSectors + track.StartSector, sectorsToDo,
out sector);
if(errno == ErrorNumber.NoError)
result = sectorsToDo == 1
? outputFormat.WriteSectorLong(sector, doneSectors + track.StartSector)
: outputFormat.WriteSectorsLong(sector, doneSectors + track.StartSector,
sectorsToDo);
else
{
sector = _inputFormat.ReadSectorsLong(doneSectors + track.StartSector, sectorsToDo);
result = true;
result = outputFormat.WriteSectorsLong(sector, doneSectors + track.StartSector,
sectorsToDo);
if(ForceChecked)
{
warning = true;
AaruConsole.ErrorWriteLine("Error {0} reading sector {1}, continuing...", errno,
doneSectors);
}
else
{
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
GetMessageBoxStandardWindow("Error",
$"Error {errno} reading sector {doneSectors}, not continuing...",
icon: Icon.Error).
ShowDialog(_view));
return;
}
}
}
else
{
errno = sectorsToDo == 1

View File

@@ -53,15 +53,12 @@ namespace Aaru.Gui.ViewModels.Windows
{
_inputFormat = inputFormat;
try
{
inputFormat.ReadSectorLong(0);
ErrorNumber errno = inputFormat.ReadSectorLong(0, out _);
if(errno == ErrorNumber.NoError)
LongSectorChecked = true;
}
catch
{
else
LongSectorVisible = false;
}
TotalSectorsText = $"of {inputFormat.Info.Sectors}";
SectorNumber = 0;
@@ -81,12 +78,10 @@ namespace Aaru.Gui.ViewModels.Windows
this.RaiseAndSetIfChanged(ref _sectorNumber, value);
byte[] sector;
ErrorNumber errno = ErrorNumber.NoError;
ErrorNumber errno;
if(LongSectorChecked)
sector = _inputFormat.ReadSectorLong((ulong)SectorNumber);
else
errno = _inputFormat.ReadSector((ulong)SectorNumber, out sector);
errno = LongSectorChecked ? _inputFormat.ReadSectorLong((ulong)SectorNumber, out sector)
: _inputFormat.ReadSector((ulong)SectorNumber, out sector);
if(errno == ErrorNumber.NoError)
PrintHexText = PrintHex.ByteArrayToHexArrayString(sector, HEX_COLUMNS);