REFACTOR: Final cleanup of DiscImageChef.Metadata.

This commit is contained in:
2017-12-24 03:03:13 +00:00
parent 5bdd1ea0cd
commit 9dda52522c
5 changed files with 90 additions and 88 deletions

View File

@@ -45,34 +45,6 @@ namespace DiscImageChef.Interop
{ {
public static class DetectOS public static class DetectOS
{ {
/// <summary>
/// POSIX uname structure, size from OSX, big enough to handle extra fields
/// </summary>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
struct utsname
{
/// <summary>
/// System name
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string sysname;
/// <summary>
/// Node name
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string nodename;
/// <summary>
/// Release level
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string release;
/// <summary>
/// Version level
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string version;
/// <summary>
/// Hardware level
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string machine;
}
[DllImport("libc", SetLastError = true)] [DllImport("libc", SetLastError = true)]
static extern int uname(out utsname name); static extern int uname(out utsname name);
@@ -80,17 +52,17 @@ namespace DiscImageChef.Interop
static extern int OSX_sysctlbyname(string name, IntPtr oldp, IntPtr oldlenp, IntPtr newp, uint newlen); static extern int OSX_sysctlbyname(string name, IntPtr oldp, IntPtr oldlenp, IntPtr newp, uint newlen);
/// <summary> /// <summary>
/// Gets the real platform ID, not the incomplete .NET framework one /// Gets the real platform ID, not the incomplete .NET framework one
/// </summary> /// </summary>
/// <returns>Platform ID</returns> /// <returns>Platform ID</returns>
/// <exception cref="Exception">Unhandled exception</exception> /// <exception cref="Exception">Unhandled exception</exception>
public static PlatformID GetRealPlatformID() public static PlatformID GetRealPlatformID()
{ {
if((int)Environment.OSVersion.Platform < 4 || (int)Environment.OSVersion.Platform == 5) return (PlatformID)(int)Environment.OSVersion.Platform; if((int)Environment.OSVersion.Platform < 4 || (int)Environment.OSVersion.Platform == 5)
return (PlatformID)(int)Environment.OSVersion.Platform;
int error = uname(out utsname unixname); int error = uname(out utsname unixname);
if(error != 0) if(error != 0) throw new Exception($"Unhandled exception calling uname: {Marshal.GetLastWin32Error()}");
throw new Exception($"Unhandled exception calling uname: {Marshal.GetLastWin32Error()}");
switch(unixname.sysname) switch(unixname.sysname)
{ {
@@ -134,7 +106,8 @@ namespace DiscImageChef.Interop
if(machine != null && (machine.StartsWith("iPad", StringComparison.Ordinal) || if(machine != null && (machine.StartsWith("iPad", StringComparison.Ordinal) ||
machine.StartsWith("iPod", StringComparison.Ordinal) || machine.StartsWith("iPod", StringComparison.Ordinal) ||
machine.StartsWith("iPhone", StringComparison.Ordinal))) return PlatformID.iOS; machine.StartsWith("iPhone", StringComparison.Ordinal)))
return PlatformID.iOS;
return PlatformID.MacOSX; return PlatformID.MacOSX;
} }
@@ -174,7 +147,7 @@ namespace DiscImageChef.Interop
} }
/// <summary> /// <summary>
/// Checks if the underlying runtime runs in 64-bit mode /// Checks if the underlying runtime runs in 64-bit mode
/// </summary> /// </summary>
public static bool Is64Bit() public static bool Is64Bit()
{ {
@@ -182,7 +155,7 @@ namespace DiscImageChef.Interop
} }
/// <summary> /// <summary>
/// Checks if the underlying runtime runs in 32-bit mode /// Checks if the underlying runtime runs in 32-bit mode
/// </summary> /// </summary>
public static bool Is32Bit() public static bool Is32Bit()
{ {
@@ -190,7 +163,7 @@ namespace DiscImageChef.Interop
} }
/// <summary> /// <summary>
/// Gets a string for the current operating system REAL version (handles Darwin 1.4 and Windows 10 falsifying) /// Gets a string for the current operating system REAL version (handles Darwin 1.4 and Windows 10 falsifying)
/// </summary> /// </summary>
/// <returns>Current operating system version</returns> /// <returns>Current operating system version</returns>
public static string GetVersion() public static string GetVersion()
@@ -203,7 +176,8 @@ namespace DiscImageChef.Interop
if(Environment.OSVersion.Version.Major != 1) if(Environment.OSVersion.Version.Major != 1)
return $"10.{Environment.OSVersion.Version.Major - 4}.{Environment.OSVersion.Version.Minor}"; return $"10.{Environment.OSVersion.Version.Major - 4}.{Environment.OSVersion.Version.Minor}";
switch(Environment.OSVersion.Version.Minor) { switch(Environment.OSVersion.Version.Minor)
{
case 3: return "10.0"; case 3: return "10.0";
case 4: return "10.1"; case 4: return "10.1";
} }
@@ -223,7 +197,7 @@ namespace DiscImageChef.Interop
} }
/// <summary> /// <summary>
/// From a platform ID and version returns a human-readable version /// From a platform ID and version returns a human-readable version
/// </summary> /// </summary>
/// <param name="id">Platform ID</param> /// <param name="id">Platform ID</param>
/// <param name="version">Version number</param> /// <param name="version">Version number</param>
@@ -301,5 +275,33 @@ namespace DiscImageChef.Interop
default: return id.ToString(); default: return id.ToString();
} }
} }
/// <summary>
/// POSIX uname structure, size from OSX, big enough to handle extra fields
/// </summary>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
struct utsname
{
/// <summary>
/// System name
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string sysname;
/// <summary>
/// Node name
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string nodename;
/// <summary>
/// Release level
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string release;
/// <summary>
/// Version level
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string version;
/// <summary>
/// Hardware level
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string machine;
}
} }
} }

View File

@@ -39,152 +39,152 @@
namespace DiscImageChef.Interop namespace DiscImageChef.Interop
{ {
/// <summary> /// <summary>
/// Contains an arbitrary list of OSes, even if .NET does not run on them /// Contains an arbitrary list of OSes, even if .NET does not run on them
/// </summary> /// </summary>
public enum PlatformID public enum PlatformID
{ {
/// <summary> /// <summary>
/// Win32s /// Win32s
/// </summary> /// </summary>
Win32S = 0, Win32S = 0,
/// <summary> /// <summary>
/// Win32 (Windows 9x) /// Win32 (Windows 9x)
/// </summary> /// </summary>
Win32Windows = 1, Win32Windows = 1,
/// <summary> /// <summary>
/// Windows NT /// Windows NT
/// </summary> /// </summary>
Win32NT = 2, Win32NT = 2,
/// <summary> /// <summary>
/// Windows Mobile /// Windows Mobile
/// </summary> /// </summary>
WinCE = 3, WinCE = 3,
/// <summary> /// <summary>
/// UNIX (do not use, too generic) /// UNIX (do not use, too generic)
/// </summary> /// </summary>
Unix = 4, Unix = 4,
/// <summary> /// <summary>
/// Xbox 360 /// Xbox 360
/// </summary> /// </summary>
Xbox = 5, Xbox = 5,
/// <summary> /// <summary>
/// OS X /// OS X
/// </summary> /// </summary>
MacOSX = 6, MacOSX = 6,
/// <summary> /// <summary>
/// iOS is not OS X /// iOS is not OS X
/// </summary> /// </summary>
iOS = 7, iOS = 7,
/// <summary> /// <summary>
/// Linux /// Linux
/// </summary> /// </summary>
Linux = 8, Linux = 8,
/// <summary> /// <summary>
/// Sun Solaris /// Sun Solaris
/// </summary> /// </summary>
Solaris = 9, Solaris = 9,
/// <summary> /// <summary>
/// NetBSD /// NetBSD
/// </summary> /// </summary>
NetBSD = 10, NetBSD = 10,
/// <summary> /// <summary>
/// OpenBSD /// OpenBSD
/// </summary> /// </summary>
OpenBSD = 11, OpenBSD = 11,
/// <summary> /// <summary>
/// FreeBSD /// FreeBSD
/// </summary> /// </summary>
FreeBSD = 12, FreeBSD = 12,
/// <summary> /// <summary>
/// DragonFly BSD /// DragonFly BSD
/// </summary> /// </summary>
DragonFly = 13, DragonFly = 13,
/// <summary> /// <summary>
/// Nintendo Wii /// Nintendo Wii
/// </summary> /// </summary>
Wii = 14, Wii = 14,
/// <summary> /// <summary>
/// Nintendo Wii U /// Nintendo Wii U
/// </summary> /// </summary>
WiiU = 15, WiiU = 15,
/// <summary> /// <summary>
/// Sony PlayStation 3 /// Sony PlayStation 3
/// </summary> /// </summary>
PlayStation3 = 16, PlayStation3 = 16,
/// <summary> /// <summary>
/// Sony Playstation 4 /// Sony Playstation 4
/// </summary> /// </summary>
PlayStation4 = 17, PlayStation4 = 17,
/// <summary> /// <summary>
/// Google Android /// Google Android
/// </summary> /// </summary>
Android = 18, Android = 18,
/// <summary> /// <summary>
/// Samsung Tizen /// Samsung Tizen
/// </summary> /// </summary>
Tizen = 19, Tizen = 19,
/// <summary> /// <summary>
/// Windows Phone /// Windows Phone
/// </summary> /// </summary>
WindowsPhone = 20, WindowsPhone = 20,
/// <summary> /// <summary>
/// GNU/Hurd /// GNU/Hurd
/// </summary> /// </summary>
Hurd = 21, Hurd = 21,
/// <summary> /// <summary>
/// Haiku /// Haiku
/// </summary> /// </summary>
Haiku = 22, Haiku = 22,
/// <summary> /// <summary>
/// HP-UX /// HP-UX
/// </summary> /// </summary>
HPUX = 23, HPUX = 23,
/// <summary> /// <summary>
/// AIX /// AIX
/// </summary> /// </summary>
AIX = 24, AIX = 24,
/// <summary> /// <summary>
/// OS/400 /// OS/400
/// </summary> /// </summary>
OS400 = 25, OS400 = 25,
/// <summary> /// <summary>
/// IRIX /// IRIX
/// </summary> /// </summary>
IRIX = 26, IRIX = 26,
/// <summary> /// <summary>
/// Minix /// Minix
/// </summary> /// </summary>
Minix = 27, Minix = 27,
/// <summary> /// <summary>
/// NonStop /// NonStop
/// </summary> /// </summary>
NonStop = 28, NonStop = 28,
/// <summary> /// <summary>
/// QNX /// QNX
/// </summary> /// </summary>
QNX = 29, QNX = 29,
/// <summary> /// <summary>
/// SINIX /// SINIX
/// </summary> /// </summary>
SINIX = 30, SINIX = 30,
/// <summary> /// <summary>
/// Tru64 UNIX /// Tru64 UNIX
/// </summary> /// </summary>
Tru64 = 31, Tru64 = 31,
/// <summary> /// <summary>
/// Ultrix /// Ultrix
/// </summary> /// </summary>
Ultrix = 32, Ultrix = 32,
/// <summary> /// <summary>
/// SCO OpenServer / SCO UNIX /// SCO OpenServer / SCO UNIX
/// </summary> /// </summary>
OpenServer = 33, OpenServer = 33,
/// <summary> /// <summary>
/// SCO UnixWare /// SCO UnixWare
/// </summary> /// </summary>
UnixWare = 34, UnixWare = 34,
/// <summary> /// <summary>
/// IBM z/OS /// IBM z/OS
/// </summary> /// </summary>
zOS = 35, zOS = 35,
Unknown = -1 Unknown = -1

View File

@@ -31,11 +31,11 @@
// ****************************************************************************/ // ****************************************************************************/
using System; using System;
using System.Diagnostics.CodeAnalysis;
using System.Xml.Serialization; using System.Xml.Serialization;
using DiscImageChef.Decoders.ATA; using DiscImageChef.Decoders.ATA;
using DiscImageChef.Decoders.SCSI; using DiscImageChef.Decoders.SCSI;
using DiscImageChef.Decoders.SCSI.MMC; using DiscImageChef.Decoders.SCSI.MMC;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
// ReSharper disable UnusedAutoPropertyAccessor.Global // ReSharper disable UnusedAutoPropertyAccessor.Global

View File

@@ -57,7 +57,8 @@ namespace DiscImageChef.Metadata
{ {
if(extents == null) return null; if(extents == null) return null;
List<Tuple<ulong, ulong>> tuples = extents.Select(extent => new Tuple<ulong, ulong>(extent.Start, extent.End)).ToList(); List<Tuple<ulong, ulong>> tuples =
extents.Select(extent => new Tuple<ulong, ulong>(extent.Start, extent.End)).ToList();
return new ExtentsULong(tuples); return new ExtentsULong(tuples);
} }

View File

@@ -38,11 +38,11 @@ namespace DiscImageChef.Metadata
[XmlRoot("DicStats", Namespace = "", IsNullable = false)] [XmlRoot("DicStats", Namespace = "", IsNullable = false)]
public class Stats public class Stats
{ {
public CommandsStats Commands;
[XmlArrayItem("OperatingSystem")] [XmlArrayItem("OperatingSystem")]
public List<OsStats> OperatingSystems { get; set; } public List<OsStats> OperatingSystems { get; set; }
[XmlArrayItem("Version")] [XmlArrayItem("Version")]
public List<NameValueStats> Versions { get; set; } public List<NameValueStats> Versions { get; set; }
public CommandsStats Commands;
[XmlArrayItem("Filesystem")] [XmlArrayItem("Filesystem")]
public List<NameValueStats> Filesystems { get; set; } public List<NameValueStats> Filesystems { get; set; }
[XmlArrayItem("Scheme")] [XmlArrayItem("Scheme")]
@@ -74,13 +74,13 @@ namespace DiscImageChef.Metadata
public long Entropy; public long Entropy;
public long ExtractFiles; public long ExtractFiles;
public long Formats; public long Formats;
public long ListDevices;
public long ListEncodings;
public long Ls; public long Ls;
public long MediaInfo; public long MediaInfo;
public long MediaScan; public long MediaScan;
public long PrintHex; public long PrintHex;
public long Verify; public long Verify;
public long ListDevices;
public long ListEncodings;
} }
public class VerifiedItems public class VerifiedItems
@@ -97,19 +97,19 @@ namespace DiscImageChef.Metadata
public class ScannedSectors public class ScannedSectors
{ {
public long Total;
public long Error;
public long Correct; public long Correct;
public long Error;
public long Total;
public long Unverifiable; public long Unverifiable;
} }
public class TimeStats public class TimeStats
{ {
public long LessThan3ms;
public long LessThan10ms; public long LessThan10ms;
public long LessThan50ms;
public long LessThan150ms; public long LessThan150ms;
public long LessThan3ms;
public long LessThan500ms; public long LessThan500ms;
public long LessThan50ms;
public long MoreThan500ms; public long MoreThan500ms;
} }
@@ -127,12 +127,12 @@ namespace DiscImageChef.Metadata
public class BenchmarkStats public class BenchmarkStats
{ {
public double All;
[XmlElement("Checksum")] public List<ChecksumStats> Checksum; [XmlElement("Checksum")] public List<ChecksumStats> Checksum;
public double Entropy; public double Entropy;
public double All;
public double Sequential;
public long MaxMemory; public long MaxMemory;
public long MinMemory; public long MinMemory;
public double Sequential;
} }
public class MediaStats public class MediaStats
@@ -144,12 +144,11 @@ namespace DiscImageChef.Metadata
public class DeviceStats public class DeviceStats
{ {
[XmlIgnore] public bool ManufacturerSpecified;
public string Manufacturer { get; set; } public string Manufacturer { get; set; }
public string Model { get; set; } public string Model { get; set; }
public string Revision { get; set; } public string Revision { get; set; }
public string Bus { get; set; } public string Bus { get; set; }
[XmlIgnore] public bool ManufacturerSpecified;
} }
public class NameValueStats public class NameValueStats