[Refactor] Convert to switch expressions.

This commit is contained in:
2024-05-01 17:18:37 +01:00
parent 87613c03b7
commit b75fcf0f41
48 changed files with 1321 additions and 2619 deletions

View File

@@ -398,18 +398,11 @@ sealed partial class Dump
break;
}
switch(desiredSubchannel)
{
case MmcSubchannel.None:
subType = TrackSubchannelType.None;
break;
case MmcSubchannel.Raw:
case MmcSubchannel.Q16:
subType = TrackSubchannelType.Raw;
break;
}
subType = desiredSubchannel switch
{
MmcSubchannel.None => TrackSubchannelType.None,
MmcSubchannel.Raw or MmcSubchannel.Q16 => TrackSubchannelType.Raw
};
blockSize = sectorSize + subSize;

View File

@@ -91,15 +91,11 @@ partial class Dump
if(opticalDisc)
{
switch(dskType)
{
case MediaType.REV35:
case MediaType.REV70:
case MediaType.REV120:
opticalDisc = false;
break;
}
opticalDisc = dskType switch
{
MediaType.REV35 or MediaType.REV70 or MediaType.REV120 => false,
_ => opticalDisc
};
}
_dumpLog.WriteLine(Localization.Core.Initializing_reader);

View File

@@ -81,21 +81,14 @@ public sealed partial class MediaScan
/// <exception cref="NotSupportedException">Unknown device type</exception>
public ScanResults Scan()
{
switch(_dev.Type)
{
case DeviceType.ATA:
return Ata();
case DeviceType.MMC:
case DeviceType.SecureDigital:
return SecureDigital();
case DeviceType.NVMe:
return Nvme();
case DeviceType.ATAPI:
case DeviceType.SCSI:
return Scsi();
default:
throw new NotSupportedException(Localization.Core.Unknown_device_type);
}
return _dev.Type switch
{
DeviceType.ATA => Ata(),
DeviceType.MMC or DeviceType.SecureDigital => SecureDigital(),
DeviceType.NVMe => Nvme(),
DeviceType.ATAPI or DeviceType.SCSI => Scsi(),
_ => throw new NotSupportedException(Localization.Core.Unknown_device_type)
};
}
/// <summary>Aborts the running media scan</summary>

View File

@@ -42,96 +42,85 @@ public static class Error
/// <returns>Error description.</returns>
public static string Print(int errno)
{
switch(DetectOS.GetRealPlatformID())
{
case PlatformID.Win32S:
case PlatformID.Win32Windows:
case PlatformID.Win32NT:
case PlatformID.WinCE:
case PlatformID.WindowsPhone:
case PlatformID.Xbox:
return PrintWin32Error(errno);
case PlatformID.Unix:
case PlatformID.MacOSX:
case PlatformID.iOS:
case PlatformID.Linux:
case PlatformID.Solaris:
case PlatformID.NetBSD:
case PlatformID.OpenBSD:
case PlatformID.FreeBSD:
case PlatformID.DragonFly:
case PlatformID.Android:
case PlatformID.Tizen:
case PlatformID.Hurd:
case PlatformID.Haiku:
case PlatformID.HPUX:
case PlatformID.AIX:
case PlatformID.OS400:
case PlatformID.IRIX:
case PlatformID.Minix:
case PlatformID.QNX:
case PlatformID.SINIX:
case PlatformID.Tru64:
case PlatformID.Ultrix:
case PlatformID.OpenServer:
case PlatformID.UnixWare:
case PlatformID.zOS:
return PrintUnixError(errno);
case PlatformID.Wii:
return string.Format(Localization.Core.error_code_0, errno);
case PlatformID.WiiU:
return string.Format(Localization.Core.error_code_0, errno);
case PlatformID.PlayStation3:
return string.Format(Localization.Core.error_code_0, errno);
case PlatformID.PlayStation4:
return string.Format(Localization.Core.error_code_0, errno);
case PlatformID.NonStop:
return string.Format(Localization.Core.error_code_0, errno);
case PlatformID.Unknown:
return string.Format(Localization.Core.error_code_0, errno);
default:
return string.Format(Localization.Core.error_code_0, errno);
}
return DetectOS.GetRealPlatformID() switch
{
PlatformID.Win32S
or PlatformID.Win32Windows
or PlatformID.Win32NT
or PlatformID.WinCE
or PlatformID.WindowsPhone
or PlatformID.Xbox => PrintWin32Error(errno),
PlatformID.Unix
or PlatformID.MacOSX
or PlatformID.iOS
or PlatformID.Linux
or PlatformID.Solaris
or PlatformID.NetBSD
or PlatformID.OpenBSD
or PlatformID.FreeBSD
or PlatformID.DragonFly
or PlatformID.Android
or PlatformID.Tizen
or PlatformID.Hurd
or PlatformID.Haiku
or PlatformID.HPUX
or PlatformID.AIX
or PlatformID.OS400
or PlatformID.IRIX
or PlatformID.Minix
or PlatformID.QNX
or PlatformID.SINIX
or PlatformID.Tru64
or PlatformID.Ultrix
or PlatformID.OpenServer
or PlatformID.UnixWare
or PlatformID.zOS => PrintUnixError(errno),
PlatformID.Wii => string.Format(Localization.Core.error_code_0, errno),
PlatformID.WiiU => string.Format(Localization.Core.error_code_0, errno),
PlatformID.PlayStation3 => string.Format(Localization.Core.error_code_0, errno),
PlatformID.PlayStation4 => string.Format(Localization.Core.error_code_0, errno),
PlatformID.NonStop => string.Format(Localization.Core.error_code_0, errno),
PlatformID.Unknown => string.Format(Localization.Core.error_code_0, errno),
_ => string.Format(Localization.Core.error_code_0, errno)
};
}
static string PrintUnixError(int errno)
{
switch(errno)
{
case 2: // ENOENT
case 19: // ENODEV
return Localization.Core.The_specified_device_cannot_be_found;
case 13: // EACCESS
return Localization.Core.Not_enough_permissions_to_open_the_device;
case 16: // EBUSY
return Localization.Core.The_specified_device_is_in_use_by_another_process;
case 30: // EROFS
return Localization.Core.Cannot_open_the_device_in_writable_mode_as_needed_by_some_commands;
default:
return string.Format(Localization.Core.error_code_0, errno);
}
return errno switch
{
2 or 19 => // ENODEV
// ENOENT
Localization.Core.The_specified_device_cannot_be_found,
13 => // EACCESS
Localization.Core.Not_enough_permissions_to_open_the_device,
16 => // EBUSY
Localization.Core.The_specified_device_is_in_use_by_another_process,
30 => // EROFS
Localization.Core.Cannot_open_the_device_in_writable_mode_as_needed_by_some_commands,
_ => string.Format(Localization.Core.error_code_0, errno)
};
}
static string PrintWin32Error(int errno)
{
switch(errno)
{
case 2: // ERROR_FILE_NOT_FOUND
case 3: // ERROR_PATH_NOT_FOUND
return Localization.Core.The_specified_device_cannot_be_found;
case 5: // ERROR_ACCESS_DENIED
return Localization.Core.Not_enough_permissions_to_open_the_device;
case 19: // ERROR_WRITE_PROTECT
return Localization.Core.Cannot_open_the_device_in_writable_mode_as_needed_by_some_commands;
case 32: // ERROR_SHARING_VIOLATION
case 33: // ERROR_LOCK_VIOLATION
case 108: // ERROR_DRIVE_LOCKED
case 170: // ERROR_BUSY
return Localization.Core.The_specified_device_is_in_use_by_another_process;
case 130: // ERROR_DIRECT_ACCESS_HANDLE
return Localization.Core.Tried_to_open_a_file_instead_of_a_device;
default:
return string.Format(Localization.Core.error_code_0, errno);
}
return errno switch
{
2 or 3 => // ERROR_PATH_NOT_FOUND
// ERROR_FILE_NOT_FOUND
Localization.Core.The_specified_device_cannot_be_found,
5 => // ERROR_ACCESS_DENIED
Localization.Core.Not_enough_permissions_to_open_the_device,
19 => // ERROR_WRITE_PROTECT
Localization.Core.Cannot_open_the_device_in_writable_mode_as_needed_by_some_commands,
32 or 33 or 108 or 170 => // ERROR_BUSY
// ERROR_DRIVE_LOCKED
// ERROR_LOCK_VIOLATION
// ERROR_SHARING_VIOLATION
Localization.Core.The_specified_device_is_in_use_by_another_process,
130 => // ERROR_DIRECT_ACCESS_HANDLE
Localization.Core.Tried_to_open_a_file_instead_of_a_device,
_ => string.Format(Localization.Core.error_code_0, errno)
};
}
}

View File

@@ -68,36 +68,15 @@ sealed class MhddLog
_mhddFs = new MemoryStream();
_logFile = outputFile;
string mode;
switch(dev.Type)
{
case DeviceType.ATA:
case DeviceType.ATAPI:
mode = "MODE: IDE";
break;
case DeviceType.SCSI:
mode = "MODE: SCSI";
break;
case DeviceType.MMC:
mode = "MODE: MMC";
break;
case DeviceType.NVMe:
mode = "MODE: NVMe";
break;
case DeviceType.SecureDigital:
mode = "MODE: SD";
break;
default:
mode = "MODE: IDE";
break;
}
string mode = dev.Type switch
{
DeviceType.ATA or DeviceType.ATAPI => "MODE: IDE",
DeviceType.SCSI => "MODE: SCSI",
DeviceType.MMC => "MODE: MMC",
DeviceType.NVMe => "MODE: NVMe",
DeviceType.SecureDigital => "MODE: SD",
_ => "MODE: IDE"
};
var device = $"DEVICE: {dev.Manufacturer} {dev.Model}";
var fw = $"F/W: {dev.FirmwareRevision}";

View File

@@ -274,124 +274,38 @@ public static class MMC
Localization.Core.GET_CONFIGURATION_current_profile_is_0,
ftr.CurrentProfile);
switch(ftr.CurrentProfile)
{
case 0x0001:
mediaType = MediaType.GENERIC_HDD;
break;
case 0x0005:
mediaType = MediaType.CDMO;
break;
case 0x0008:
mediaType = MediaType.CD;
break;
case 0x0009:
mediaType = MediaType.CDR;
break;
case 0x000A:
mediaType = MediaType.CDRW;
break;
case 0x0010:
mediaType = MediaType.DVDROM;
break;
case 0x0011:
mediaType = MediaType.DVDR;
break;
case 0x0012:
mediaType = MediaType.DVDRAM;
break;
case 0x0013:
case 0x0014:
mediaType = MediaType.DVDRW;
break;
case 0x0015:
case 0x0016:
mediaType = MediaType.DVDRDL;
break;
case 0x0017:
mediaType = MediaType.DVDRWDL;
break;
case 0x0018:
mediaType = MediaType.DVDDownload;
break;
case 0x001A:
mediaType = MediaType.DVDPRW;
break;
case 0x001B:
mediaType = MediaType.DVDPR;
break;
case 0x0020:
mediaType = MediaType.DDCD;
break;
case 0x0021:
mediaType = MediaType.DDCDR;
break;
case 0x0022:
mediaType = MediaType.DDCDRW;
break;
case 0x002A:
mediaType = MediaType.DVDPRWDL;
break;
case 0x002B:
mediaType = MediaType.DVDPRDL;
break;
case 0x0040:
mediaType = MediaType.BDROM;
break;
case 0x0041:
case 0x0042:
mediaType = MediaType.BDR;
break;
case 0x0043:
mediaType = MediaType.BDRE;
break;
case 0x0050:
mediaType = MediaType.HDDVDROM;
break;
case 0x0051:
mediaType = MediaType.HDDVDR;
break;
case 0x0052:
mediaType = MediaType.HDDVDRAM;
break;
case 0x0053:
mediaType = MediaType.HDDVDRW;
break;
case 0x0058:
mediaType = MediaType.HDDVDRDL;
break;
case 0x005A:
mediaType = MediaType.HDDVDRWDL;
break;
}
mediaType = ftr.CurrentProfile switch
{
0x0001 => MediaType.GENERIC_HDD,
0x0005 => MediaType.CDMO,
0x0008 => MediaType.CD,
0x0009 => MediaType.CDR,
0x000A => MediaType.CDRW,
0x0010 => MediaType.DVDROM,
0x0011 => MediaType.DVDR,
0x0012 => MediaType.DVDRAM,
0x0013 or 0x0014 => MediaType.DVDRW,
0x0015 or 0x0016 => MediaType.DVDRDL,
0x0017 => MediaType.DVDRWDL,
0x0018 => MediaType.DVDDownload,
0x001A => MediaType.DVDPRW,
0x001B => MediaType.DVDPR,
0x0020 => MediaType.DDCD,
0x0021 => MediaType.DDCDR,
0x0022 => MediaType.DDCDRW,
0x002A => MediaType.DVDPRWDL,
0x002B => MediaType.DVDPRDL,
0x0040 => MediaType.BDROM,
0x0041 or 0x0042 => MediaType.BDR,
0x0043 => MediaType.BDRE,
0x0050 => MediaType.HDDVDROM,
0x0051 => MediaType.HDDVDR,
0x0052 => MediaType.HDDVDRAM,
0x0053 => MediaType.HDDVDRW,
0x0058 => MediaType.HDDVDRDL,
0x005A => MediaType.HDDVDRWDL,
_ => mediaType
};
}
if(decodedToc?.TrackDescriptors.Any(t => t.SessionNumber == 2) == true)

View File

@@ -309,139 +309,50 @@ public sealed class ScsiInfo
Localization.Core.GET_CONFIGURATION_current_profile_is_0,
ftr.CurrentProfile);
switch(ftr.CurrentProfile)
{
case 0x0001:
MediaType = MediaType.GENERIC_HDD;
break;
case 0x0002:
MediaType = scsiMediumType switch
{
0x01 => MediaType.PD650,
0x41 => Blocks switch
{
58620544 => MediaType.REV120,
17090880 => MediaType.REV35,
34185728 => MediaType.REV70,
_ => MediaType
},
_ => MediaType.Unknown
};
break;
case 0x0005:
MediaType = MediaType.CDMO;
break;
case 0x0008:
MediaType = MediaType.CD;
break;
case 0x0009:
MediaType = MediaType.CDR;
break;
case 0x000A:
MediaType = MediaType.CDRW;
break;
case 0x0010:
MediaType = MediaType.DVDROM;
break;
case 0x0011:
MediaType = MediaType.DVDR;
break;
case 0x0012:
MediaType = MediaType.DVDRAM;
break;
case 0x0013:
case 0x0014:
MediaType = MediaType.DVDRW;
break;
case 0x0015:
case 0x0016:
MediaType = MediaType.DVDRDL;
break;
case 0x0017:
MediaType = MediaType.DVDRWDL;
break;
case 0x0018:
MediaType = MediaType.DVDDownload;
break;
case 0x001A:
MediaType = MediaType.DVDPRW;
break;
case 0x001B:
MediaType = MediaType.DVDPR;
break;
case 0x0020:
MediaType = MediaType.DDCD;
break;
case 0x0021:
MediaType = MediaType.DDCDR;
break;
case 0x0022:
MediaType = MediaType.DDCDRW;
break;
case 0x002A:
MediaType = MediaType.DVDPRWDL;
break;
case 0x002B:
MediaType = MediaType.DVDPRDL;
break;
case 0x0040:
MediaType = MediaType.BDROM;
break;
case 0x0041:
case 0x0042:
MediaType = MediaType.BDR;
break;
case 0x0043:
MediaType = MediaType.BDRE;
break;
case 0x0050:
MediaType = MediaType.HDDVDROM;
break;
case 0x0051:
MediaType = MediaType.HDDVDR;
break;
case 0x0052:
MediaType = MediaType.HDDVDRAM;
break;
case 0x0053:
MediaType = MediaType.HDDVDRW;
break;
case 0x0058:
MediaType = MediaType.HDDVDRDL;
break;
case 0x005A:
MediaType = MediaType.HDDVDRWDL;
break;
}
MediaType = ftr.CurrentProfile switch
{
0x0001 => MediaType.GENERIC_HDD,
0x0002 => scsiMediumType switch
{
0x01 => MediaType.PD650,
0x41 => Blocks switch
{
58620544 => MediaType.REV120,
17090880 => MediaType.REV35,
34185728 => MediaType.REV70,
_ => MediaType
},
_ => MediaType.Unknown
},
0x0005 => MediaType.CDMO,
0x0008 => MediaType.CD,
0x0009 => MediaType.CDR,
0x000A => MediaType.CDRW,
0x0010 => MediaType.DVDROM,
0x0011 => MediaType.DVDR,
0x0012 => MediaType.DVDRAM,
0x0013 or 0x0014 => MediaType.DVDRW,
0x0015 or 0x0016 => MediaType.DVDRDL,
0x0017 => MediaType.DVDRWDL,
0x0018 => MediaType.DVDDownload,
0x001A => MediaType.DVDPRW,
0x001B => MediaType.DVDPR,
0x0020 => MediaType.DDCD,
0x0021 => MediaType.DDCDR,
0x0022 => MediaType.DDCDRW,
0x002A => MediaType.DVDPRWDL,
0x002B => MediaType.DVDPRDL,
0x0040 => MediaType.BDROM,
0x0041 or 0x0042 => MediaType.BDR,
0x0043 => MediaType.BDRE,
0x0050 => MediaType.HDDVDROM,
0x0051 => MediaType.HDDVDR,
0x0052 => MediaType.HDDVDRAM,
0x0053 => MediaType.HDDVDRW,
0x0058 => MediaType.HDDVDRDL,
0x005A => MediaType.HDDVDRWDL,
_ => MediaType
};
}
if(MediaType == MediaType.PD650 && Blocks == 1281856) MediaType = MediaType.PD650_WORM;

View File

@@ -414,24 +414,16 @@ public sealed partial class Sidecar
Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96
};
switch(trk.SubchannelType)
{
case TrackSubchannelType.Packed:
case TrackSubchannelType.PackedInterleaved:
xmlTrk.SubChannel.Image.Format = "rw";
break;
case TrackSubchannelType.Raw:
case TrackSubchannelType.RawInterleaved:
xmlTrk.SubChannel.Image.Format = "rw_raw";
break;
case TrackSubchannelType.Q16:
case TrackSubchannelType.Q16Interleaved:
xmlTrk.SubChannel.Image.Format = "q16";
break;
}
xmlTrk.SubChannel.Image.Format = trk.SubchannelType switch
{
TrackSubchannelType.Packed
or TrackSubchannelType.PackedInterleaved => "rw",
TrackSubchannelType.Raw
or TrackSubchannelType.RawInterleaved => "rw_raw",
TrackSubchannelType.Q16
or TrackSubchannelType.Q16Interleaved => "q16",
_ => xmlTrk.SubChannel.Image.Format
};
if(trk.FileOffset > 0) xmlTrk.SubChannel.Image.Offset = trk.SubchannelOffset;