REFACTOR: All refactor in DiscImageChef.Devices.

This commit is contained in:
2017-12-22 03:13:43 +00:00
parent 49144eeb01
commit e87e058a11
40 changed files with 671 additions and 854 deletions

View File

@@ -92,8 +92,7 @@ namespace DiscImageChef.Devices.Linux
sense |= (ioHdr.info & SgInfo.OkMask) != SgInfo.Ok;
if(ioHdr.duration > 0) duration = ioHdr.duration;
else duration = (end - start).TotalMilliseconds;
duration = ioHdr.duration > 0 ? ioHdr.duration : (end - start).TotalMilliseconds;
Marshal.FreeHGlobal(ioHdr.dxferp);
Marshal.FreeHGlobal(ioHdr.cmdp);
@@ -162,8 +161,7 @@ namespace DiscImageChef.Devices.Linux
cdb[13] = registers.DeviceHead;
cdb[14] = registers.Command;
byte[] senseBuffer;
int error = SendScsiCommand(fd, cdb, ref buffer, out senseBuffer, timeout,
int error = SendScsiCommand(fd, cdb, ref buffer, out byte[] senseBuffer, timeout,
AtaProtocolToScsiDirection(protocol), out duration, out sense);
if(senseBuffer.Length < 22 || senseBuffer[8] != 0x09 && senseBuffer[9] != 0x0C) return error;
@@ -224,8 +222,7 @@ namespace DiscImageChef.Devices.Linux
cdb[13] = registers.DeviceHead;
cdb[14] = registers.Command;
byte[] senseBuffer;
int error = SendScsiCommand(fd, cdb, ref buffer, out senseBuffer, timeout,
int error = SendScsiCommand(fd, cdb, ref buffer, out byte[] senseBuffer, timeout,
AtaProtocolToScsiDirection(protocol), out duration, out sense);
if(senseBuffer.Length < 22 || senseBuffer[8] != 0x09 && senseBuffer[9] != 0x0C) return error;
@@ -292,8 +289,7 @@ namespace DiscImageChef.Devices.Linux
cdb[13] = registers.DeviceHead;
cdb[14] = registers.Command;
byte[] senseBuffer;
int error = SendScsiCommand(fd, cdb, ref buffer, out senseBuffer, timeout,
int error = SendScsiCommand(fd, cdb, ref buffer, out byte[] senseBuffer, timeout,
AtaProtocolToScsiDirection(protocol), out duration, out sense);
if(senseBuffer.Length < 22 || senseBuffer[8] != 0x09 && senseBuffer[9] != 0x0C) return error;

View File

@@ -46,9 +46,7 @@ namespace DiscImageChef.Devices.Linux
DeviceInfo[] devices = new DeviceInfo[sysdevs.Length];
bool hasUdev;
StreamReader sr;
IntPtr udev = IntPtr.Zero;
IntPtr udevDev;
try
{
@@ -59,13 +57,12 @@ namespace DiscImageChef.Devices.Linux
for(int i = 0; i < sysdevs.Length; i++)
{
devices[i] = new DeviceInfo();
devices[i].Path = "/dev/" + Path.GetFileName(sysdevs[i]);
devices[i] = new DeviceInfo {Path = "/dev/" + Path.GetFileName(sysdevs[i])};
if(hasUdev)
{
udevDev = Extern.udev_device_new_from_subsystem_sysname(udev, "block",
Path.GetFileName(sysdevs[i]));
IntPtr udevDev = Extern.udev_device_new_from_subsystem_sysname(udev, "block",
Path.GetFileName(sysdevs[i]));
devices[i].Vendor = Extern.udev_device_get_property_value(udevDev, "ID_VENDOR");
devices[i].Model = Extern.udev_device_get_property_value(udevDev, "ID_MODEL");
if(!string.IsNullOrEmpty(devices[i].Model)) devices[i].Model = devices[i].Model.Replace('_', ' ');
@@ -75,10 +72,11 @@ namespace DiscImageChef.Devices.Linux
devices[i].Bus = Extern.udev_device_get_property_value(udevDev, "ID_BUS");
}
StreamReader sr;
if(File.Exists(Path.Combine(sysdevs[i], "device/vendor")) && string.IsNullOrEmpty(devices[i].Vendor))
{
sr = new StreamReader(Path.Combine(sysdevs[i], "device/vendor"), Encoding.ASCII);
devices[i].Vendor = sr.ReadLine().Trim();
devices[i].Vendor = sr.ReadLine()?.Trim();
}
else if(devices[i].Path.StartsWith("/dev/loop", StringComparison.CurrentCulture))
devices[i].Vendor = "Linux";
@@ -87,7 +85,7 @@ namespace DiscImageChef.Devices.Linux
(string.IsNullOrEmpty(devices[i].Model) || devices[i].Bus == "ata"))
{
sr = new StreamReader(Path.Combine(sysdevs[i], "device/model"), Encoding.ASCII);
devices[i].Model = sr.ReadLine().Trim();
devices[i].Model = sr.ReadLine()?.Trim();
}
else if(devices[i].Path.StartsWith("/dev/loop", StringComparison.CurrentCulture))
devices[i].Model = "Linux";
@@ -95,7 +93,7 @@ namespace DiscImageChef.Devices.Linux
if(File.Exists(Path.Combine(sysdevs[i], "device/serial")) && string.IsNullOrEmpty(devices[i].Serial))
{
sr = new StreamReader(Path.Combine(sysdevs[i], "device/serial"), Encoding.ASCII);
devices[i].Serial = sr.ReadLine().Trim();
devices[i].Serial = sr.ReadLine()?.Trim();
}
if(string.IsNullOrEmpty(devices[i].Vendor) || devices[i].Vendor == "ATA")

View File

@@ -32,11 +32,13 @@
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;
namespace DiscImageChef.Devices.Linux
{
[StructLayout(LayoutKind.Sequential)]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
struct SgIoHdrT
{
/// <summary>
@@ -67,6 +69,7 @@ namespace DiscImageChef.Devices.Linux
}
[StructLayout(LayoutKind.Sequential)]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
struct MmcIocCmd
{
/// <summary>